Spring Boot
是Spring家族当中的一个全新框架 , 设计的目的是用来简化应用的初始搭建以及开发过程
该框架使用了特定的方式进行配置 , 从而使开发人员不再需要定义样板化的配置
Spring本身非常强大 , 但是缺点就是需要大量的XML配置用来完成大量的依赖管理
Spring Boot的目标就是解决这方面的问题
可以帮助开发者快速启动一个web容器 ( 相当于是将tomcat直接嵌入到项目当中 , 而省去了部署运行的过程 )
它可以作为微服务的一个入门微框架
Hello World
现在尝试快速搭建一个使用SpringBoot运行的web项目
创建maven项目
创建一个普通的maven项目 , 添加spring-boot的依赖
因为我们需要让spring-boot来运行一个web项目
所以添加spring-boot-starter-web
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.3.RELEASE</version>
</dependency>
编写Controller
@RestController
public class TestController {
@RequestMapping("/")
public String home() {
return "hello";
}
}
这里的@RestController
相当于是@Controller与@ResponseBody的组合
也就是控制器方法的返回值就会直接作为HTTP请求的响应体内容
( 这个步骤与SpringMVC当中基本一致 )
启动程序
现在我们还需要一个程序的启动入口 , 也就是一个main方法
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@SpringBootApplication 是一个组合注解 , 相当于包含下列3个注解
@Configuration
- 声明当前类是个配置类 , 相当于之前配置Spring所用的xml文件@EnableAutoConfiguration
- 作用是让SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置@ComponentScan
- 自动扫描包名下所有使用 @Component @Service @Repository @Controller 的类 , 并将其注册为bean
注意 : 这里默认扫描的是同包下的类
所以如果TestController与启动类不在同一个包下面 , 则不会生效
现在运行程序 , 然后使用浏览器访问
http://localhost:8080/
就可以执行到控制器方法了 , 并且获得对应的响应
不过在这里都是执行的默认配置 , 并没有进行任何定制 , 算是一个最简单的demo
热部署
直接使用上面的默认配置 , 在对程序执行修改之后 ( 哪怕是只修改了方法内部代码 , 没有改变类结构 ) , 是无法立即生效的
为了开发方便 , 可以使用下面的方案
热启动
在pom.xml当中添加如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>1.5.4.RELEASE</version>
</dependency>
这里实现的其实不是真正的热部署
这个jar包是作为一个spring-boot的开发工具的
每次对代码有修改 , 都会去重新加载spring application的上下文
相当于是自动重启程序
热部署
要实现真正的热部署 , 需要用到springloaded
这个包
但是并不是直接在项目当中引入
而是添加到JVM的参数
-javaagent:/Users/Sookie/Documents/apache-maven-3.5.0/mavenLib/org/springframework/springloaded/1.2.7.RELEASE/springloaded-1.2.7.RELEASE.jar -noverify
在eclipse当中的设置
即可实现对代码修改后实时生效
与maven的配合
使用Spring Boot Maven Plugin
这个插件 , 可以实现用maven来运行或者打包spring boot程序
在pom.xml当中添加该插件
<build>
...
<plugins>
...
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.4.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
使用maven运行该项目
定位到项目目录 , 执行
mvn spring-boot:run
与在IDE当中直接运行主类效果是一样的
使用maven进行打包
定位到项目目录 , 执行
mvn package
这时候会在target目录下生成一个jar包文件
注意 : 如果不使用这个插件 , 打包也是可以成功的
但是会因为缺少清单文件而无法运行
也就是说这个插件会在打包过程中自动生成清单文件
比如我这里打包生成的jar文件是spring_boot_demo-1.0-SNAPSHOT.jar
执行下面的命令可以直接运行
java -jar spring_boot_demo-1.0-SNAPSHOT.jar