Spring @DependsOn 使用类而不是 bean 名称

lev*_*ied 7 java spring

有没有办法提供类本身而不是 bean 名称@DependsOn

即假设:

@Component
class MyComponent {
}
Run Code Online (Sandbox Code Playgroud)

而不是这个:

@Component
@DependsOn("myComponent")
class Dependent {
}
Run Code Online (Sandbox Code Playgroud)

做这个:

@Component
@DependsOn(MyComponent.class)
class Dependent {
}
Run Code Online (Sandbox Code Playgroud)

或者,有没有办法使用其他注释或 Spring 配置形式来实现相同的功能?

我想要这样做的原因是为了确保编译器对此进行检查,因此类重命名直到运行时才会破坏它。

Ken*_*han 2

如果您的目的只是让编译器检查,以便重命名MyComponent 不会破坏事物,您可以简单地分配一个自定义的 bean 名称,MyComponent这样它的 bean 名称将不再依赖于从类名称派生的默认行为。

设置一个常量来引用这个自定义的bean名称,每个需要引用这个bean名称的bean配置都应该引用这个常量。

从代码角度看,它看起来像:

@Component(value=MyComponent.beanName)
class MyComponent {

   public static final String beanName = "myComponent"; 
}

@Component
@DependsOn(MyComponent.beanName)
class Dependent {

}
Run Code Online (Sandbox Code Playgroud)