java - 与 ConditionalOnMissingBean 相反

标签 java spring spring-boot

所以我有一个标准的 Spring Boot Web 应用程序。我需要允许多种身份验证机制。所以我希望能够拥有处理不同身份验证的 jar 文件。一个用于 SAML 服务器、CAS、OAuth 等...

我希望我的“基本”war 文件使用标准 jdbc(现在是这样),但我希望能够将我的 CAS-security.jar 放在类路径中,并让 spring 使用它的 AuthenticationProvider。现在我的 Application.java 类中有这个

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth
    .authenticationProvider(authenticationProvider)
    .userDetailsService(userDetailsService);
}

我 @Autowire 提供者和服务,它们像平常一样定义为 @Bean...

但我想注释(我认为)那些 @Bean 定义,以表示“如果还有其他可用的情况,请不要使用它”

我想要与 ConditionalOnMissingBean 完全相反的内容。现在我想我可以使用该注释,并列出我可以使用的每个可能的插件类,但这是不好的形式,因为我不想每次创建新的安全插件时都重新编译/重新部署。

是否有 UseThisIfNoOtherBeanExists 类型注释?

事实上,我真正想要的是,我拥有所有安全内容,例如 SecurityConfiguration,用 @Configuration 注释,并且将整个类替换为其他内容(如果可用)。

最佳答案

听起来您正在寻找 ConditionalOnMissingBean 。仅当且仅当该类型的 bean 尚未在 bean 工厂中注册时,才会使用用此注释的 bean。

如果您对此不满意,您还有其他选择。您可以仔细阅读the entire org.springframework.boot.autoconfigure.condition package看看是否有最适合您的用例的东西。或者,您也可以利用 @Conditional ,并根据应用程序运行的环境手工制定条件。

关于java - 与 ConditionalOnMissingBean 相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49237871/

相关文章:

java - 没有找到对象时如何处理返回值

java - 使用 hibernate 条件选择值对象

java - 如何在 Spring Boot 中向 H2 数据库中插入值

java - 如何在单元测试中使用自定义 Spring 作用域 (SpringJUnit4ClassRunner)

java - Spring ToStringCreator 的使用

java - REST API 自动连接服务的远程或本地实现

eclipse - 在 Spring 启动程序中更改端口号。没有 application.properties

java - 无法将 dex 与 google 的新地方 compat sdk 合并

java - 动态上下文菜单项

java - hibernate搜索中的OnFields方法接受什么数据类型