SpringBoot是如何完成自动配置的
1,SB的项目启动注解
@SpringBootApplication
public class SpringbootHelloWorldApplication {public static void main(String[] args) {SpringApplication.run(SpringbootHelloWorldApplication.class, args);}}
2,@SpringBootApplication注解由@Configuration@ComponentScan@EnableAutoConfiguration 三种注解组成
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {@Filter(type = FilterType.CUSTOM,classes = {TypeExcludeFilter.class}
), @Filter(type = FilterType.CUSTOM,classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
------------------------------------------------@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
@Indexed
public @interface SpringBootConfiguration {@AliasFor(annotation = Configuration.class)boolean proxyBeanMethods() default true;
}
3,其中EnablAutoConfiguration还引入了AutoConfigurationImportSelector类
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";Class<?>[] exclude() default {};String[] excludeName() default {};
}
4,AutoConfigurationImportSelector中扫描了 META-INF/spring.factories
protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {List<String> configurations = SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.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;
}
SpringBoot是如何完成自动配置的相关推荐
- SpringBoot核心原理:自动配置、事件驱动、Condition
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/l6108003/article/ details/106966386 前言 SpringBoot是Spring的包装,通过自动 ...
- java框架之SpringBoot(5)-SpringMVC的自动配置
本篇文章内容详细可参考官方文档第 29 节. SpringMVC介绍 SpringBoot 非常适合 Web 应用程序开发.可以使用嵌入式 Tomcat,Jetty,Undertow 或 Netty ...
- springboot 获取bean_SpringBoot高级(自动配置 事件监听 监控)
SpringBoot自动配置 condition-1 Condition是Spring4.0后引入的条件化配置接口,通过实现Condition接口可以完成有条件的加载相应的Bean @Conditio ...
- SpringBoot自定义Starter(自动配置类)
前言 SpringBoot其实从诞生以来围绕的核心就是快速构建项目,快速构建的前提是有人帮你做好轮子,开发者只要拿来即用就好了,而造好轮子的人就是SpringBoot的开发者,引入自动配置的形式帮助开 ...
- SpringBoot的@Conditional和自动配置类生效
@Conditional原理 在之前的博客中提到了关于自动配置的原理,但是在自动配置的时候有很多的判断,只有当这些判断都成功之后在自动配置的时候才会成功.但是我们会发现一个问题,当我们使用@Be ...
- 【SpringBoot 2】(五)自动配置简析源码 开发中小技巧
写在前面
- SpringBoot自动配置的原理及实现
SpringBoot的核心就是自动配置,自动配置是基于条件判断配置Bean 自动配置的源码在spring-boot-autoconfigure-2.2.13.RELEASE SpringBoot运行原 ...
- springboot继承组件_SpringBoot如何扩展引入的组件,以及如何自动配置组件原理
大家都知道,当我们创建SpringBoot项目之后,我们可以在pom文件下,引入我们想要启动的组件,当我们引入之后,SpringBoot会自动帮我们配置属性! 下面我们以SpringBoot引入Spr ...
- SpringBoot 自动配置
Springboot 自动配置 关注 "弋凡"(YiFan)微信公众号吧 记录简单笔记 做你的最爱 Springboot 是什么呐? 我管她是什么,好用就行了啊!!! spring ...
- 今天,我们来详细的聊一聊SpringBoot自动配置原理,学了这么久,你学废了吗?
SpringBoot是我们经常使用的框架,那么你能不能针对SpringBoot实现自动配置做一个详细的介绍.如果可以的话,能不能画一下实现自动配置的流程图.牵扯到哪些关键类,以及哪些关键点. 下面我们 ...
最新文章
- 零基础入门学习Pyhton(23)字典:当索引不好用时
- Skycc营销软件,使我人生越走越精彩
- 网速、宽带速率运营商说法与用户说法转换
- One more sprint? 再加一个迭代?-英文
- exp/imp三种模式——完全、用户、表
- 配置Hyper-V Server 资源计量
- 海南大学植物代谢组学技术开发与创新应用课题组博士后招聘
- c语言中的数据变量类型,大小
- MFC 设置应用程序开机启动并设置运行路径
- 基于JAVA+SpringMVC+Mybatis+MYSQL的bbs论坛管理系统
- kaggle实战_4解决高维数据分类/回归问题--房价预测
- 基于语音识别技术的声控鼠标光标程序设计
- 使用System.Drawing.Printing 画报表。
- 联想提取exe文件中的bios文件_3900不带X能干过99K吗?品牌机做视频渲染可以?联想刃7000P评测...
- 如何在程序中安装指定apk文件
- Visual Studio开源库集成器Vcpkg全教程--利用Vcpkg轻松集成开源第三方库
- 详解如何提取Unity素材,源码
- Springboot定时任务、Quartz表达式
- 怎么提供电子邮件副本_停止提供您的电话号码和电子邮件
- DDoS Deflate 的安装和使用