bean是如何创建,条件依赖,获取参数,发现与加载的。

(一)、bean配置:
1、@Configuration能生产让Spring IOC容器管理的Bean实例的工厂
2、@Bean告诉Spring,一个带有@Bean的注解方法将返回一个对象,该对象被注册到Spring容器中。
(二)、自动配置条件依赖
3、@Conditional
@ConditionalOnBean,仅在当前上下文中存在某个bean时,才会实例 化这个Bean.
@ConditionalOnClass,某个class位于类路径上,才会实例化这个Bean。
@ConditionalOnExpression,当表达式为true的时候,才会实例化这个Bean。
@ConditionalOnMissingBean,仅在当前上下文中不存在某个bean时,才会实例化这个Bean。
@ConditionalOnMissingClass,某个class在类路径上不存在的时候,才会实例化这个Bean。
@ConditionalOnNotWebApplication,不是web应用时才会实例化这个Bean。
@AutoConfigureAfter,在某个bean完成自动配置后实例化这个bean。
@AutoConfigureBefore,在某个bean完成自动配置前实例化这个bean。
(三)、 bean参数获取
4、@ConfigurationProperties指定了配置文件的前缀,把yaml或者proprtties配置文件转化为bean
5、EnableConfigurationProperties使ConfiguratonProperties生效,如果只配置上面的注解。在Spring容器中获取不到上述两配置文件转化的bean
(四)、bean发现
springboot默认扫描是启动类所在的包下的主类与子类的多有组件,并没有依赖包中的类。、
通常我们在启动类中加入SpringBootApplication注解
实际上他有三部分组成
(1)Configuration:将注解的类变成一个bean配置类
(2)EnableAutoConfigurtion借助@import(导入需要配置的组件)的支持,收集和注册依赖包中相关的bean的定义、他还引入了@AutoConfigurationPackage(自动配置包)。
(3)ComponentScan的作用就是自动扫描并加载符合条件的组件,比如@componet和repository等,最终这些bean定义加载到spring容器中。

(五)、bean加载
将一个类交给spring容器管理,通常有以下几种方法
1、使用@Configuration和@Bean注解
2、使用@Controller  @Service @Repository @Component注解标注该类
3、使用import方法

springboot中使用了@import方法
@EnableAutoConfiguration注解中使用了@Import({AutoConfigurationImportSelector.class})注解,AutoConfigurationImportSelector实现了DeferredImportSelector接口,

DeferredImportSelector接口继承了ImportSelector接口,ImportSelector接口只有一个selectImports方法。

selectImports方法返回一组bean@EnableConfiguration注解借助@import注解将这组bean注解到spring容器当中springboot正式通过这种机制来完成bean的注入的

1、@Configuration&与@Bean->基于java代码的bean配置

2、@Conditional->设置自动配置条件依赖

3、@EnableConfigurationProperties与@ConfigurationProperties->读取配置文件转换为bean。

4、@EnableAutoConfiguration、@AutoConfigurationPackage 与@Import->实现bean发现与加载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值