繁体   English   中英

如何检查spring boot应用程序在自动配置类中是否有特定的注释

[英]How to check if an spring boot application has a certain annotation in autoconfiguration class

我正在创建我自己的 spring boot starter 来集中我的项目中的一些常见配置。 我想让我的 @Configuration 类只匹配,如果我的 Spring Boot 应用程序以某种方式注释,如下所示:

@SpringBootApplication
@EnableResourceServer
public class MyApplication {
...

当我使用@ConditionalOnClass 时:

@Configuration
@ConditionalOnClass({EnableResourceServer.class})
class ResourceServerAutoConfiguration 

即使应用程序不是资源服务器(不存在注释),使用依赖项时也会匹配自动配置。

是否存在仅在 spring boot 应用程序存在特定注释时才匹配的条件?

我相信最简单的方法是

  1. 将@Import 注释添加到您的@EnableResourceServer 注释类并传入您的配置类
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Import(ResourceServerAutoConfiguration.class) public @interface EnableResourceServer { }
  1. 从 spring.factories 文件的自动配置块中删除 ResourceServerAutoConfiguration,使其不再自动配置。

这应该导致仅在存在注释时才加载配置,即。

@SpringBootApplication
@EnableResourceServer
public class NotificationAdapterApplication {
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM