前言

随着各种开源的第三方的组件爆发式增长,java的开发显得越来越笨重:繁多的配置,低下的开发效率,复杂的部署流程以及第三方技术集成难度大。

在上述环境下,Spring Boot应运而生。它使用"习惯优于配置"(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无需手动进行配置) 的理念让你的项目快速运行起来。使用Spring boot很容易创建一个独立运行(运行jar,内置servlet容器)、准生产级别的基于Spring框架的项目,使用spring boot你可以不用或者很少的spring配置。

spring boot的优缺点
优点:

  1. 快速构建项目

  2. 对主流开发框架的无配置集成

  3. 项目可独立运行,无须依赖外部servlet容器

  4. 提供运行时的应用监控

  5. 极大的提高了开发部署效率

  6. 与云计算的天然集成

缺点:

  1. 书籍文档较少且不够深入

  2. 由于大部分配置在类里面完成的,所以损失了一定的可维护的便利性

所以spring boot特别适合中小型项目。

Hello World程序开发

1. 设置spring boot的parent

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version>
</parent>

说明:Spring boot的项目必须要将parent设置为spring boot的parent,该parent包含了大量默认的配置,大大简化了我们的开发。
而且引入以后在申明其它dependency的时候就不需要version了,后面可以看到。

2. 导入spring boot的web支持

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

3. 添加spring boot的maven插件

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

当然,如果你不想用maven命令运行,也可以不用配置该插件

pom文件完整版

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.wx</groupId><artifactId>springboot01</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><!-- java编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin><!-- 如果你不想用maven命令运行spring boot可以不用作此配置 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

4. 编写Hello World程序

package com.wx.controlers;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
@SpringBootApplication
//@Configuration  //因为@SpringBootApplication包含了Configuration,所以这里可以省略
public class HelloApp {@RequestMapping("hello")@ResponseBodypublic String hello(){return "Hello";}public static void main(String[] args) {SpringApplication.run(HelloApp.class, args);}}

代码说明:
(1)@SpringBootApplication:Spring Boot项目的核心注解,主要目的是开启自动配置。
(2)@Configuration:这是一个配置Spring的配置类。
(3)@Controller:标明这是一个SpringMVC的Controller控制器。

(4)@ResponseBody: 如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解
(5)main方法:在main方法中启动一个应用,即:这个应用的入口。
当然,我们也可以用restfull风格的注解(@restcontroller)来标注,如下代码:

package com.wx.controlers;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;@RestController
@SpringBootApplication
//@Configuration  //因为@SpringBootApplication包含了Configuration,所以这里可以省略
public class HelloApp {@RequestMapping("hello")//@ResponseBodypublic String hello(){return "Hello";}public static void main(String[] args) {SpringApplication.run(HelloApp.class, args);}}

官方文档:
@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
意思是:
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。
如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

5. 启动应用

在Spring Boot项目中,启动的方式有两种,一种是直接run Java Application另外一种是通过Spring Boot的Maven插件运行。

第一种:

第二种:

在项目上单击右键===》Run as===> Maven build…

看到如下信息,说明启动成功了

[ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
[ main] com.wx.controlers.HelloApp : Started HelloApp in 3.126 seconds (JVM running for 42.425)

启动浏览器运行

6 spring boot的核心

(1) 入口类和@SpringBootApplication

Spring Boot的项目一般都会有*Application的入口类,入口类中会有main方法,
这是一个标准的Java应用程序的入口方法。
@SpringBootApplication注解是Spring Boot的核心注解,它其实是一个组合注解:

该注解主要组合了以下注解:
1.@SpringBootConfiguration:这是Spring Boot项目的配置注解,这也是一个组合注解:

在Spring Boot项目中推荐使用@ SpringBootConfiguration替代@Configuration,所以HelloApp入口类上的Configuration注解可以注释掉

2.@EnableAutoConfiguration:启用自动配置,该注解会使Spring Boot根据项目中依赖的jar包自动配置项目的配置项:
a)如:我们添加了spring-boot-starter-web的依赖,项目中也就会引入SpringMVC的依赖,Spring Boot就会自动配置tomcat和SpringMVC

3.@ComponentScan:默认扫描@SpringBootApplication所在类的同级目录以及它的子目录。

如果我们在启动类上又配置了@ComponentScan, 那么该默认的扫描失效,当前包也要重新纳入扫描!

(2) 关闭自动配置

通过上述,我们得知,Spring Boot会根据项目中的jar包依赖,自动做出配置,Spring Boot支持的自动配置如下(非常多):

如果我们不需要Spring Boot自动配置,想关闭某一项的自动配置,该如何设置呢?
比如:我们不想自动配置Redis,想手动配置。
当然了,其他的配置就类似了。

7 解决jsp页面的支持问题

由于Spring boot使用的内嵌的tomcat,而内嵌的tamcat是不支持jsp页面的,所有需要导入额外的包才能解决。

org.apache.tomcat.embed tomcat-embed-jasper provided 修改启动类

package com.wx.controlers;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@Controller
@SpringBootApplication
//@Configuration //因为@SpringBootApplication包含了Configuration,所以这里可以省略
public class HelloApp {

@RequestMapping("hello")
//@ResponseBody
public String hello(){return "Hello";
}public static void main(String[] args) {SpringApplication.run(HelloApp.class, args);
}

}
写一个Hello.jsp的页面放到webapp目录下:

编写全局配置文件application.properties,如图所示

关于全局配置文件,以后再讲解!

重新运行,结果如图

spring boot基础教程:入门程序Hello World的编写相关推荐

  1. Spring Boot 基础教程:集成 Knife4j

    前言 之前介绍了如何在 Spring Boot 中集成 Swagger2 和 Swagger3,对于我们日常的接口管理已经够用了.但是作为一个颜值党,无论是 Swagger2 还是 Swagger3, ...

  2. 小程序+spring boot美食教程小程序 毕业设计-附源码190900

    Springboot美食教程小程序的设计与实现 摘 要 本文设计了一种基于微信小程序的美食教程小程序,系统为人们提供了方便快捷.即用即搜的美食教程服务,包括美食资讯.美食话题.注册登录等,用户能够方便 ...

  3. (附源码)mysql小程序+spring boot美食教程小程序 毕业设计 190900

    Springboot美食教程小程序的设计与实现 摘 要 本文设计了一种基于微信小程序的美食教程小程序,系统为人们提供了方便快捷.即用即搜的美食教程服务,包括美食资讯.美食话题.注册登录等,用户能够方便 ...

  4. springboot+mysql+小程序+spring boot美食教程小程序 毕业设计源码190900

    Springboot美食教程小程序的设计与实现 摘 要 本文设计了一种基于微信小程序的美食教程小程序,系统为人们提供了方便快捷.即用即搜的美食教程服务,包括美食资讯.美食话题.注册登录等,用户能够方便 ...

  5. Spring Boot快速搭建入门程序

    一.快速搭建入门程序 第一步 新增Spring-Boot-starter-parent依赖[父级项目的web依赖] <parent><groupId>org.springfra ...

  6. spring boot基础教程之文件上传下载

    一文件上传 文件上传主要分以下几个步骤: (1)新建maven java project: (2)在pom.xml加入相应依赖: (3)新建一个文件上传表单页面; (4)编写controller; ( ...

  7. boot入门思想 spring_什么是Spring boot?Spring Boot快速入门以及Spring Boot实例教程

    转自:http://www.jianshu.com/p/d24bceea7665 简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候, ...

  8. springboot做网站_Github点赞接近 100k 的Spring Boot学习教程+实战项目推荐!

    " 本文已经收录进:awesome-java (Github 上非常棒的 Java 开源项目集合) 很明显的一个现象,除了一些老项目,现在 Java 后端项目基本都是基于 Spring Bo ...

  9. 全网Star最多「近20k」的Spring Boot开源教程 2019 年要继续更新了

    点击蓝色"程序猿DD"关注我哟 从2016年1月开始写博客,默默地更新<Spring Boot系列教程>,从无人问津到千万访问,作为一个独立站点(http://blog ...

最新文章

  1. 5G前夜 运营商如何实现网络创新?
  2. WSS 3.0 Object Model
  3. Sql结果导出为excel文件
  4. 弹出确定_Redmi K30 Pro再剧透:弹出式全面屏,没有高刷
  5. mysql5.7.13_mysql5.7.13.zip安装(windows)
  6. 注释代码c语言,C/C++ 源文件删除注释代码
  7. 存放在外存上的数据关机后_小鑫话题 | 惊了!关机后SSD会丢数据?
  8. jira 查找issue_JIRA使用教程:高级搜索—字段参考4/4
  9. java类输出_java的输出类
  10. java拆分list_Java平均拆分list
  11. Linux下mySql的安装和使用
  12. 小数据作为解题关键:
  13. Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven
  14. echarts地图数据过旧,通过geojson自定义经纬度地图
  15. pygame UI 框架
  16. 运维需要懂产品和运营吗?
  17. POJ 1655 Balancing Act
  18. 把大脑从衰老的身体里分离出来?“长寿科技”让人类活200年不再遥远
  19. 【xbox开发】unity3d xbox one手柄键位
  20. 知道创宇区块链实验室受邀参加“2021 CCF中国区块链技术大会”

热门文章

  1. redis主从复制原理、断点续传、无磁盘化复制、过期key处理
  2. java修改字节码技术,Javassist修改class,ASM修改class
  3. linux通过命令行本地目录取消svn关联
  4. 牛客题霸 NC4 判断链表中是否有环
  5. 《编译原理》实验预习报告——基于YACC的TINY语法分析器的构建
  6. Eclipse——UML类图插件
  7. nacos client 请求过程
  8. 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结
  9. Kotlin实战指南十七:JvmField、JvmStatic使用
  10. Base64 加密算法原理