SpringBoot AutoConfigure学习总结
来源:互联网 发布:青岛特来电公司知乎 编辑:程序博客网 时间:2024/05/16 01:04
- SpringBoot 优点
自动配置是Spring Boot的最大亮点,完美的展示了CoC约定由于配置。Spring Boot能自动配置Spring各种子项目(Spring MVC, Spring Security, Spring Data, Spring Cloud, Spring Integration, Spring Batch等)以及第三方开源框架所需要定义的各种Bean。
Spring Boot内部定义了各种各样的XxxxAutoConfiguration配置类,预先定义好了各种所需的Bean。只有在特定的情况下这些配置类才会被起。
2. 自动配置类清单
spring-boot-autoconfigure-1.5.1.RELEASE.jar/META-INF/spring.factories
Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\
……
org.springframework.boot.autoconfigure.web.WebClientAutoConfiguration,\
org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration,\
org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration,\
org.springframework.boot.autoconfigure.websocket.WebSocketMessagingAutoConfiguration,\
org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration
- 自动配置类定义
以org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration 为例子:
- @Configuration
- @ConditionalOnWebApplication(type = Type.SERVLET)
- @ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurerAdapter.class })
- @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
- @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
- @AutoConfigureAfter({ DispatcherServletAutoConfiguration.class, ValidationAutoConfiguration.class })
- public class WebMvcAutoConfiguration {
-
- @Bean
- @ConditionalOnMissingBean(HiddenHttpMethodFilter.class)
- public OrderedHiddenHttpMethodFilter hiddenHttpMethodFilter() {
- return new OrderedHiddenHttpMethodFilter();
- }
-
- // …
-
- }
- 如何加载这些自动配置的类
通过执行SpringApplication.run()方法,会把当前的SpringBootDemoApplication作为source传入,而在SpringApplication类中还会读取spring.factories中的设置一并构建应用的Context
- 自动配置类加载的条件
条件配置 基于Spring的@Conditional,SpringBoot提供了丰富的条件配置:
引用
@ConditionalOnClass : classpath中存在该类时起效
@ConditionalOnMissingClass : classpath中不存在该类时起效
@ConditionalOnBean : DI容器中存在该类型Bean时起效
@ConditionalOnMissingBean : DI容器中不存在该类型Bean时起效
@ConditionalOnSingleCandidate : DI容器中该类型Bean只有一个或@Primary的只有一个时起效
@ConditionalOnExpression : SpEL表达式结果为true时
@ConditionalOnProperty : 参数设置或者值一致时起效
@ConditionalOnResource : 指定的文件存在时起效
@ConditionalOnJndi : 指定的JNDI存在时起效
@ConditionalOnJava : 指定的Java版本存在时起效
@ConditionalOnWebApplication : Web应用环境下起效
@ConditionalOnNotWebApplication : 非Web应用环境下起效
参考:
http://rensanning.iteye.com/blog/2363467
- SpringBoot AutoConfigure学习总结
- SpringBoot之初遇AutoConfigure
- springboot学习总结
- springboot学习总结
- springboot学习总结(一)
- SpringBoot JPA学习概要总结
- SpringBoot学习总结(一)
- SpringBoot学习总结(二)
- AUTOCONFIGURE命令
- SpringBoot+Mybatis学习Demo问题总结1
- springboot总结
- SpringBoot总结
- SpringBoot总结
- SpringBoot -SpringBoot学习
- Spring Boot#AutoConfigure
- springBoot学习
- SpringBoot学习
- SpringBoot学习
- [opencv]模板匹配算法(单图像模板匹配和基于模板匹配的目标跟踪)
- 关于jsp web项目中的javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver错误
- RDO一键部署OpenStack-Ocata版本
- PreferenceScreen
- hash和zset
- SpringBoot AutoConfigure学习总结
- jvm原理1:cenos编译openjdk8
- java 知识点
- JavaScript从入门到放弃(4)--原生的DOM操作,以及Ajax网络请求
- 括号配对问题
- centOS 安装配置Tomcat
- NPN_InvalidateRect的堆栈
- android4.4,6.0,7.0系统调用相机拍照通配及获取相册图片
- CBK北京运营中心“奋战2017年第四季度动员大会”圆满成功