如何解决防止自动配置所有包含的Spring Cloud依赖项
在Spring Boot中排除几个AutoConfiguration
类很容易。只需将其从应用程序中排除即可:
@SpringBootApplication(exclude = {
org.springframework.cloud.autoconfigure.RefreshAutoConfiguration.class,org.springframework.cloud.openfeign.FeignAutoConfiguration.class,})
但是如何在不将所有Spring Clouds AutoConfiguration
类添加到排除项的情况下排除包org.springframework.cloud
中的所有AutoConfiguration
呢?如果不是一百个条目,那将是几十个。而且,随着每一个新的Spring Cloud版本的出现,新的AutoConfiguration
类都将成为未来的证明。
仅当未使用@ComponentScan
和@SpringBootApplication
时,才使用@EnableAutoConfiguration
。但这也将删除所有便利的自动配置功能。
有没有办法以编程方式实现这一目标?又如何?
不幸的是,从应用程序中删除Spring Clouds依赖项不是可行的解决方案。
解决方法
为什么要从自动配置中排除所有类?
“自动配置”中的大多数bean是@conditional,如果您提供自己的豆,则不会创建它们。
无论如何,您都可以查看AutoConfigurationImportSelector。到目前为止,Spring Boot只允许@EnableAutoConfigurtion的类和名称排除在外。如果要编写自定义“ AutoConfigurationImportSelector”,则可以在编写自己的扩展接口以使EnableAutoConfiguration编写包方法之后,通过包对子类进行过滤并按包过滤。
正如我提到的那样,这将是我最后要做的事情。只需检查@conditional依赖项以进行自动配置,并提供自己的bean是更好的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。