原文参见: Spring Boot入门(一) - Spring Boot介绍
Spring Boot是Spring框架用于提供RAD(快速应用程序开发)功能的模块。Spring Boot基于强大、稳定的starter templates构建。
1.什么是starter templates?
Spring Boot starter把启动特定功能所需的所有依赖打包成到一起形成模板。例如,创建Spring WebMVC应用程序的时候,传统的项目里开发人员需要自己配置所有必需的依赖项,这种手工配置方式潜在存在依赖项版本冲突问题,最终有可能会导致很多的运行时异常。
如果使用Spring Boot来创建MVC应用程序就方便很多,只需要导入spring-boot-starter-web这一个依赖项就可以了。
org.springframework.boot
spring-boot-starter-parent
2.1.6.RELEASE
org.springframework.boot
spring-boot-starter-web
引入的spring-boot-starter-web内部会自动引入所需的依赖关系。此处需注意,某些依赖是直接依赖,某些依赖进一步引入了更多starter template,所有这些引入的starter templater传递性地引入更多的jar依赖。
另请注意,不需要在子依赖项中提供版本信息。与spring-boot-starter-parent版本相匹配的子依赖版本会被使用(上述示例中我们使用到的版本是2.0.4.RELEASE)。
spring-boot-starter-web引入的依赖项
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-json
org.springframework.boot
spring-boot-starter-tomcat
org.hibernate.validator
hibernate-validator
org.springframework
spring-web
org.springframework
spring-webmvc
2. Spring Boot自动配置
使用@EnableAutoConfiguration注释可启用Spring Boot的自动配置。自动配置打开时,Spring Boot自动扫描类路径,从类路径中找到依赖库,尝试为这些依赖库设置最佳配置。
自动配置会尽可能智能化地进行配置,但如果开发人员手动配置的话自动配置会失效。
自动配置需在注册了用户定义的bean之后应用
Spring Boot自动配置的实现逻辑在spring-boot-autoconfigure.jar中。可在此处找到自动配置的package包列表:
比如,查看Spring AOP的自动配置,可看到以下操作:
- 扫描类路径,检查EnableAspectJAutoProxy,Aspect,Advice和AnnotatedElement这些类是否存在
- 如这些类不存在,不会进行Spring AOP的自动配置
- 如找到了这些类,使用Java config annotation @EnableAspectJAutoProxy来配置AOP
- 这个类将检查spring.aop的值(其值可能是true或false)
- 基于此属性的值来设置proxyTargetClass的值
AopAutoConfiguration.java
@Configuration
@ConditionalOnClass({ EnableAspectJAutoProxy.class, Aspect.class, Advice.class,
AnnotatedElement.class })
@ConditionalOnProperty(prefix = "spring.aop", name = "auto", havingValue = "true", matchIfMissing = true)
public class AopAutoConfiguration
{
@Configuration
@EnableAspectJAutoProxy(proxyTargetClass = false)
@ConditionalOnProperty(prefix = "spring.aop", name = "proxy-target-class", havingValue = "false", matchIfMissing = false)
public static class JdkDynamicAutoProxyConfiguration {
}
@Configuration
@EnableAspectJAutoProxy(proxyTargetClass = true)
@ConditionalOnProperty(prefix = "spring.aop", name = "proxy-target-class", havingValue = "true", matchIfMissing = true)
public static class CglibAutoProxyConfiguration {
}
}
3.内嵌服务器
Spring Boot应用程序以tomcat作为内嵌服务器,可以从命令行直接运行Spring Boot应用程序,无需搭建复杂的服务器环境。
根据需要可以禁用tomcat,转而使用其它内嵌服务器、或完全不使用服务器环境。所有这些都可以通过配置来实现。
下面的示例禁用了tomcat,而是使用jetty作为内嵌服务器。
pom.xml
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-jetty
4.引导应用程序
要运行应用程序,可配置@SpringBootApplication annotation,其实质是配置了@Configuration,@EnableAutoConfiguration和@ComponentScan的组合。
@SpringBootApplication annotation将扫描配置类、文件并将其加载到spring上下文。下面的示例中,代码从main()方法开始执行,接着加载所有配置文件并进行配置,读取文件夹/resources中的application.properties文件,根据其中的application properties属性引导应用程序。
MyApplication.java
@SpringBootApplication
public class MyApplication
{
public static void main(String[] args)
{
SpringApplication.run(Application.class, args);
}
}
application.properties
### Server port #########
server.port=8080
### Context root ########
server.contextPath=/home
可以从IDE(如eclipse)里运行main()方法来执行应用程序。也可以构建jar文件,然后从命令行执行如下命令来运行:
$ java -jar spring-boot-demo.jar
5. Spring Boot的优点
- Spring Boot自动识别、导入所需的依赖项,有助于解决依赖冲突
- Spring Boot维护所有依赖项的兼容版本信息,最大程度减少运行时类加载器问题
- “预设默认配置”方法可帮助开发人员透明地对核心部件进行配置,开发人员仅在需要时才覆盖其默认配置而使用所需的配置。默认情况下,不需要额外配置,Spring Boot应用也会运行得很好。这种“预设默认配置”有助于避免样板代码、annotation和XML配置
- 提供了内嵌的HTTP服务器Tomcat,可以快速进行开发和测试
- 与eclipse和intelliJ idea等IDE完美集成
6. Spring Boot配置
- Spring Boot annotation
- Spring Boot中的登录管理
- Spring Boot – Spring Boot starter template
- Spring Boot –Starter Parent依赖
- Spring Boot –获取所有已加载的bean
- Spring Boot – @SpringBootApplication和自动配置
- Spring Boot –更改Application Root
- Spring Boot –配置Jetty服务器
- Spring Boot – Tomcat默认端口
- Spring Boot – WAR打包示例
- Spring Boot –Logging的yml Config
- Spring Boot –Logging的属性Config
- Spring Boot – SSL [https]
- Spring Boot – CommandLineRunner
- Spring Boot –Developer Tools Module教程
- Spring Boot –在@Bean和@Compoment中注入应用程序参数
- Spring Boot内嵌服务器日志
- Spring Boot内嵌tomcat配置
7.开发REST API和SOAP Web服务
- Spring Boot – REST API
- Spring Boot – Jetty
- Spring Boot – Spring HATEOAS示例
- Spring Boot –REST API请求验证
- Spring Boot –基于角色的安全性
- Spring Boot – SOAP Web服务
- Spring Boot – SOAP客户端
- Spring Boot 2和ehcache 3示例
8.其它相关的内容
- 启动时禁用banner
- Spring Boot – JSP视图
- Spring Boot –自定义PropertyEditor
- Spring Boot – @EnableScheduling
- Spring Boot – JMSTemplate
- Spring Boot – RSS / ATOM Feed
- Spring Boot从资源文件夹中读取文件
- Spring Boot面试问题