Three features of Spring Boot
-
Automatic assembly of components: Web MVC, JDBC, etc.
- Activate automatic assembly : @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} )} )
- Configuration : /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
Agent the corresponding implementation-various configurations
- Implementation : 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 { ... }
Implementation
-
Embedded Web container: Tomcat, Jetty
-
Production preparation features: indicators, health checks, external configuration, etc.
- Metrics: /actuator/metrics
- Health check: /actuator/health
- Externalized configuration : / actuator/configprops