2. Spring Boot特性
1. Starter pom(起步依赖)
Spring提供了一系列的starterpom来简化Maven的依赖加载,具体可参考官方文档13.5 Starters章节。
什么是Starterpom,以上文中HelloWorld工程为示例:
在工程的pom中只有三个依赖:
其中:spring-boot-starter-web为Spring web项目所需依赖,使用了此依赖后会自动加入以下依赖:
由上图中依赖树可以看出,只需加入一个web starter pom就会自动引入一般Spring web工程中需要的相关依赖。简单方便。Spring提供多种starter pom供选择。
简单来说,starter pom是组合在一起实现某个功能的一组依赖的集合。好处不言而喻!
2. 独立运行,内嵌Servlet容器
SpringBoot的一个很大的特性是可以独立运行,既可以直接以Java-jar的方式运行,不需要依赖Servlet容器。因为其提供内嵌的Servlet容器。
上1中三个依赖中有一个为spring-boot-starter-tomcat此依赖为工程提供内嵌的Servlet容器tomcat,此外还可以使用Jetty, Undertow等作为内嵌容器。
上文中Hello World工程在创建选项中选择的打包方式为War,因此spring-boot-starter-tomcat依赖的Scope属性为provide。开发人员本地启动依然是使用的内嵌容器。
测试以jar方式启动:
1. 修改打包方式为jar,删除spring-boot-starter-tomcat的scope属性。
2. 打包(将工程环境改为JDK)
3. 启动jar包
启动成功
4. 测试访问
测试成功!
3. 自动装配
由上Hello world中可以看出,并没有进行任何的手工配置来初始化相关的Bean如:jacksonObjectMapper,dispatcherServlet,beanNameViewResolver,resourceHandlerMapping等等。
工程中所有一般web应用中需要用到的Bean均由Spring Boot来自动初始化。
查看(查看方法后面章节详细描述)所有初始化的Bean:
注:Spring Boot会根据工程类路径中的jar包,类,配置文件中的相关配置等条件,来自动配置Bean,比如:若类路径中有mybatis和Oracle的驱动包,SpringBoot会自动配置mybatis的数据源工厂等Bean。Spring Boot的自动装配主要通过条件化配置和注解来实现,这是SpringBoot的神奇之处。
简单来说,你需要什么功能,加入相关的依赖,只要你的依赖jar包满足条件,SpringBoot就会自动为你初始化配置相关Bean。
如果还没有明白什么是自动装配的话,可参考相关文档,随着对Spring Boot了解的逐渐深入,你将会有深刻的体验!
4. 提供应用内部监控(Actuator)
在Spring工程中我们无法监控到应用的内部运行情况,如Bean的生命周期,应用的健康情况等。
为解决这个问题,Spring Boot提供了执行器Actuator,来对应用内部进行监控。
具体下一章节将详细讲述。
<实例代码>
Github:https://github.com/chunyuding/SpringBoot-Demo
https://github.com/chunyuding/SpringBoot-Demo.git
码云:https://gitee.com/dingchunyu/SpringBoot-Demo
<推荐书籍>
百度云:http://pan.baidu.com/s/1qYA0Nxi