gpt4 book ai didi

java - 与 ConditionalOnMissingBean 相反

转载 作者:行者123 更新时间:2023-12-01 16:46:41 24 4
gpt4 key购买 nike

所以我有一个标准的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com