Spring Boot三大特性

Spring Boot三大特性

  • 组件自动装配:Web MVC、JDBC等

  1. 激活自动装配:@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}
)}
)
  1. 配置:/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

代理了相应的实现--各种配置

  1. 实现: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

  • 生产准备特性:指标、健康检查、外部化配置等

  1. 指标: /actuator/metrics
  2. 健康检查:/actuator/health
  3. 外部化配置:/actuator/configprops

猜你喜欢

转载自blog.csdn.net/weixin_39443483/article/details/115238409