如何检查spring boot应用程序在自动配置类中是不是有某个注释
Posted
技术标签:
【中文标题】如何检查spring boot应用程序在自动配置类中是不是有某个注释【英文标题】:How to check if an spring boot application has a certain annotation in autoconfiguration class如何检查spring boot应用程序在自动配置类中是否有某个注释 【发布时间】:2019-11-15 22:38:49 【问题描述】:我正在创建自己的 spring boot 启动器来集中我项目中的一些常见配置。我想让我的 @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
-
从 spring.factories 文件的自动配置块中删除 ResourceServerAutoConfiguration,使其不再自动配置。
这应该导致配置仅在注释存在时加载,即。
@SpringBootApplication
@EnableResourceServer
public class NotificationAdapterApplication
【讨论】:
非常感谢,这对我有用。不知道可以在注释上使用@Import。以上是关于如何检查spring boot应用程序在自动配置类中是不是有某个注释的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot参考教程Spring Boot配置使用之配置类用法
在 Spring Boot 中自动生成 API 文档 [关闭]
Spring Boot 2从入门到入坟 | 自动配置篇:源码分析之AopAutoConfiguration自动配置类