0

在我的项目中,我创建了以下类注释:

@CustomController //created by me, it is an alias for spring's @Controller
public class AController{

}

自定义控制器的定义如下:

@Target({ElementType.TYPE, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Qualifier
@Controller
public @interface CustomController{

@AliasFor(annotation = Controller.class)
String value() default "";

现在,如果至少定义了一个 @CustomController,我想实例化一个 bean 。

我找不到任何适用于这种特定情况的 @ConditionalOn* 注释,我应该创建一个自定义条件吗?怎么做?

4

1 回答 1

3

@ConditionalOnBean如果应用程序上下文中的 bean 匹配给定的要求,Spring Boot 会提供匹配的注解。

这些要求之一可能是使用给定注释对 bean 进行注释:

@ConditionalOnBean(annotation = @CustomController)

请注意,如果在常规 bean 或配置类上使用此条件可能不会总是按预期工作:

该条件只能匹配到目前为止已由应用程序上下文处理的 bean 定义,因此,强烈建议仅在自动配置类上使用此条件。如果候选 bean 可能由另一个自动配置创建,请确保使用此条件的 bean 在之后运行。

另请参阅@ConditionalOnBean 的 Javadoc创建您自己的自动配置

于 2020-06-15T14:02:23.863 回答