SpringBoot-自动配置1
来源:互联网 发布:淘宝客服退换货汇总表 编辑:程序博客网 时间:2024/05/14 23:10
1、想了解自动配置原理的建议先了解注解原理,了解几个基本的元注解:https://www.cnblogs.com/peida/archive/2013/04/24/3036689.html
SpringBoot实现原理:通过扫描META-INF/spring.factories文件,该文件记录了springBoot实现的自动配置列表,通过加载这个列表实现所有的自动配置
2、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) })public @interface SpringBootApplication {@AliasFor(annotation = EnableAutoConfiguration.class, attribute = "exclude")Class<?>[] exclude() default {};@AliasFor(annotation = EnableAutoConfiguration.class, attribute = "excludeName")String[] excludeName() default {};@AliasFor(annotation = ComponentScan.class, attribute = "basePackages")String[] scanBasePackages() default {};@AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")Class<?>[] scanBasePackageClasses() default {};}
核心功能由@EnableAutoConfiguration实现
@EnableAutoConfiguration注解:
@SuppressWarnings("deprecation")@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@AutoConfigurationPackage@Import(EnableAutoConfigurationImportSelector.class)public @interface EnableAutoConfiguration {String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";Class<?>[] exclude() default {};String[] excludeName() default {};}
@EnableAutoConfiguration注解通过@Import注解引入EnableAutoConfigtionImportSelectot.class实现主要功能
EnableAutoConfigtionImportSelectot.class继承AutoConfigurationImportSelector
AutoConfigurationImportSelector类通过getCandidateConfigurations加载META-INF/spring.factories信息,获取需要自动配置的类
protected List<String> getCandidateConfigurations(AnnotationMetadata metadata,AnnotationAttributes attributes) {List<String> configurations = SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader());Assert.notEmpty(configurations,"No auto configuration classes found in META-INF/spring.factories. If you "+ "are using a custom packaging, make sure that file is correct.");return configurations;}
阅读全文
0 0
- SpringBoot-自动配置1
- SpringBoot自动配置原理
- springboot webmvc 自动配置
- AxonFramework,SpringBoot自动配置
- SpringBoot自动配置
- SpringBoot自动配置原理
- SpringBoot 自动配置
- springboot学习----自动配置
- SpringBoot自动配置实现
- SpringBoot 自动配置原理
- SpringBoot--AxonFramework自动配置
- SpringBoot-自动配置源码解析
- springboot 禁用mongoDB自动配置
- SpringBoot学习笔记(三) SpringBoot 自动配置原理
- SpringBoot学习笔记(四) SpringBoot Web相关的自动配置
- 【Spring Boot】SpringBoot-自动配置源码解析
- springboot Test 自动配置注解详单
- springboot自动配置的核心原理
- 关于MyEclipse中启动Tomcat发生错误:Publishing to Tomcat V8.0 at localhost has encountered a problem.
- [比赛交流] JDD
- 微信小程序-“授权失败”场景的优雅处理
- android app -- 关于listview的几种用法(复用,不复用,半复用)解决item状态改变的问题
- python编程练习---一行代码实现计算器功能
- SpringBoot-自动配置1
- ansible-playbook实战之部署redis+sentinel+twemproxy
- java类中方法中的参数过多如何处理
- Spring-retry 1.1.4重试功能
- 【jQuery】jQuery官方基本教程的学习笔记1-核心Core
- 装箱问题
- Linux下Solr4.10.4搜索引擎的安装与部署图文详解
- Centos7安装mysql
- 菜鸟先飞之二维码zxing生成