Spring Boot三大特性
-
组件自动装配:Web MVC、JDBC等
- 激活自动装配:@EnableAutoConfiguration
@SpringBootApplication 在SpringBoot中的Application.java中的SpringBootApplication注解包括了如下注解: @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class} ), @Filter( type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class} )} )
- 配置:/META-INF/spring.factories
# AutoConfigureDataRedis auto-configuration imports ... # Auto Configure ... // MVC的自动配置 # AutoConfigureWebMvc auto-configuration imports ... # AutoConfigureJdbc auto-configuration imports org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbc=\ org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\ org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\ org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration
代理了相应的实现--各种配置
- 实现:XXX(JDBC/MVC)AutoConfiguration
@Configuration(proxyBeanMethods = false) @ConditionalOnWebApplication(type = Type.SERVLET) @ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class }) @ConditionalOnMissingBean(WebMvcConfigurationSupport.class) @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10) @AutoConfigureAfter({ DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class, ValidationAutoConfiguration.class }) public class WebMvcAutoConfiguration { ... }
具体实现
-
嵌入式Web容器:Tomcat、Jetty
-
生产准备特性:指标、健康检查、外部化配置等
- 指标: /actuator/metrics
- 健康检查:/actuator/health
- 外部化配置:/actuator/configprops