Spring 如何在我创建的注释上设置条件?
在我的项目中,我创建了以下类注释:Spring 如何在我创建的注释上设置条件?,spring,spring-boot,Spring,Spring Boot,在我的项目中,我创建了以下类注释: @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 @Con
@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*注释,我是否应该创建自定义条件?如何做到这一点?Spring Boot提供了注释
@ConditionalOnBean
,如果应用程序上下文中的bean与给定的需求匹配,则该注释将匹配
这些要求之一可能是使用给定的注释对bean进行注释:
@CustomController //created by me, it is an alias for spring's @Controller
public class AController{
}
@ConditionalOnBean(注释=@CustomController)
请注意,如果在常规bean或配置类上使用,则此条件可能不会始终按预期工作:
该条件只能与应用程序上下文迄今为止处理的bean定义相匹配,因此,强烈建议仅在自动配置类上使用该条件。如果候选bean可能是由另一个自动配置创建的,请确保使用此条件的bean随后运行
另请参见和。Spring Boot提供了注释
@ConditionalOnBean
,如果应用程序上下文中的bean符合给定的要求,则该注释将匹配
这些要求之一可能是使用给定的注释对bean进行注释:
@CustomController //created by me, it is an alias for spring's @Controller
public class AController{
}
@ConditionalOnBean(注释=@CustomController)
请注意,如果在常规bean或配置类上使用,则此条件可能不会始终按预期工作:
该条件只能与应用程序上下文迄今为止处理的bean定义相匹配,因此,强烈建议仅在自动配置类上使用该条件。如果候选bean可能是由另一个自动配置创建的,请确保使用此条件的bean随后运行
另请参见和。您要查找的是
@ConditionalOnBean(annotation=@CustomController)
吗?如果是这样的话,请注意Javadoc说“条件只能匹配应用程序上下文迄今为止处理过的bean定义”这句话很贴切!不知道它也可以这样使用!如果你回答我,我会把它标记为你要找的正确的@ConditionalOnBean(annotation=@CustomController)
?如果是这样的话,请注意Javadoc说“条件只能匹配应用程序上下文迄今为止处理过的bean定义”这句话很贴切!不知道它也可以这样使用!如果你回答我,我会把它标为正确的