springboot2学习笔记02

@import 单个(url)多个({a,b})如启动类(@SpringBootApplication (scanBasePackages=url))引入配置类(@Configuration(proxyBeanMethods=true))

如果配置类在启动类的url包目录下则默认把配置类包含在启动类中,但如果不在则需要使用@import注解引入该配置类

conditional注解及衍生注解

@ConditionalOnBean(name="容器名") 

 这里可以用@ConditionlOnBean查出同一配置类中不同方法上的@Bean是按顺序依次创建容器的

在方法上同时有@Bean和@ConditionalOnBean时@ConditionalOnBean的优先级高于@Bean

但不影响同类下的@Bean的创建顺序

类上时@ConditionalOnBean的优先级大于内部的所有@Bean优先级

但是不同类之间他们的实例化顺序一般是按照包扫描的先后初始化的但我们可以根据以下三种方法来解决

构造方法依赖

来决定他的实例化先后但有趣的是@Bean的容器创建先后还是不会变

如下:没依赖前根据包扫描先后MyConfig的实例化先于YouConfig,并且全实例化创建完配置类容器后才创建@Bean容器

 构造方法依赖后:myConfig依赖youConfig后

 

由此可以看出youConfig 实例化创建容器先于myConfig了但@Bean的容器创建先后并不会变更

但这也可以解决一些开发中的问题,但不可用于循环依赖中如:myConfig依赖youConfig  youConfig 自动注入myConfig时这会启动失败

@DependsOn注解

@DependsOn可以完美解决循环依赖的问题

但同样的问题是依然不能解决@Bean容器的创建先后,要解决我目前已知自由@Bean A依赖 @Bean B 时才可以解决创建先后顺序(有更好的方法后续会更新此处内容)

BeanPostProcessor 手动控制

过于繁琐价绍,有兴趣自己去了解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值