为传递依赖项禁用 Spring Boot AutoConfiguration
Posted
技术标签:
【中文标题】为传递依赖项禁用 Spring Boot AutoConfiguration【英文标题】:Disable Spring Boot AutoConfiguration for transitive dependencies 【发布时间】:2014-03-09 17:55:03 【问题描述】:我创建了一个 Spring Boot 项目来模拟肥皂服务 - 它依赖于 org.springframework.ws:spring-ws-security
来处理 ws-sec 标头,这引入了对 org.springframework.security:spring-security-core
的传递依赖
在我的运行时类路径中添加它会导致 Spring Boot 认为我想要启用 Web 安全性,即使我使用 security.basic.enabled = false
禁用它,我最终也会收到运行时 ClassNotFound 异常,除非我还添加:
compile("org.springframework.security:spring-security-web:$springSecurityVersion")
compile("org.springframework.security:spring-security-config:$springSecurityVersion")
到我的运行时类路径。有什么方法可以向 Boot 表明,尽管它在运行时位于类路径上,但我真的不想与 Spring Security 有任何关系,并使其不需要这些额外的依赖项?
【问题讨论】:
【参考方案1】:如果您真的不想与它有任何关系,也许它实际上是一个可选依赖项(并且可以被排除)?如果您无法向 @EnableAutoConfiguration
添加排除项(例如,请参阅 javadoc 了解详细信息)。你会想要排除SecurityAutoConfiguration
。
【讨论】:
感谢@DaveSyer 的快速回复!但这似乎不起作用,我仍然得到:Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/security/web/authentication/switchuser/AuthenticationSwitchUserEvent
在启动时。我的 BaseApplicationConfig.groovy 看起来像:@Configuration @EnableAutoConfiguration(exclude=[SecurityAutoConfiguration]) @Slf4j @ComponentScan(basePackages=["com.test.mocky"]) @CompileStatic public class BaseApplicationConfig ...
那是什么版本的 Spring Boot?
请尝试快照
使用最新快照 20140212 时出现与上述相同的错误
好的,你能在github(或类似的)上分享一个项目吗?以上是关于为传递依赖项禁用 Spring Boot AutoConfiguration的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot pom.xml 中临时禁用依赖项 [关闭]
在 Spring Boot 应用程序的生产环境中禁用 GraphiQL Playground