Spring6 探析之@DependsOn 注解
Spring6 探析之@DependsOn 注解
介绍
@DependsOn 注解可控制 bean 实例的初始化顺序,可以利用它手动控制 beanB 在 beanA 之后完成创建
下面是 @DependsOn 的源码
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DependsOn {
String[] value() default {};
}
可以看到,它能作用在类上和方法上,value 参数传递 bean 的 id,被注解的 bean 将在 value 中的 bean 初始化之后完成初始化
在类上的 @DependsOn
定义两个bean,我们控制 beanB 在 beanA 之后初始化
beanB 被 @DependOn 标记,表示将在beanA之后初始化
定义配置类,扫描包
测试结果:
在方法上的 @DependsOn
创建 User bean 和 Person bean,我们控制 User 要在 Person 之后创建bean实例
测试:
可以看到,User 在 Person 之后完成创建