Spring6 探析之@DependsOn 注解

发布时间 2023-05-26 21:27:29作者: acdongla

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之后初始化

image-20230526211552898

image-20230526211559130

定义配置类,扫描包

image-20230526211637904

测试结果:

image-20230526211831019

image-20230526211835179

在方法上的 @DependsOn

创建 User bean 和 Person bean,我们控制 User 要在 Person 之后创建bean实例

image-20230526212036912

测试:

image-20230526212046360

image-20230526212055636

可以看到,User 在 Person 之后完成创建