Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何在我创建的注释上设置条件?_Spring_Spring Boot - Fatal编程技术网

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定义”这句话很贴切!不知道它也可以这样使用!如果你回答我,我会把它标为正确的