gpt4 book ai didi

java - 动态加载配置Bean

转载 作者:行者123 更新时间:2023-11-30 07:22:47 24 4
gpt4 key购买 nike

我正在制作一个 Spring Boot 应用程序,它需要具有基本身份验证或 Oauth2,具体取决于我定义的属性。

问题是,如果我使用 @configuration 创建了两个类,则应用程序不会启动,如果我只留下一个类,并在配置方法中添加一个 if 来配置 HttpSecurity 对象,则在尝试访问端点时会失败具有基本身份验证。

我尝试以这种方式动态注册bean:

@Bean
public ResourceServerSecurityConfig oauthConfig(){
if(isOauthEnabled){
return new ResourceServerSecurityConfig();
}else{
return null;
}
}
@Bean
public BasicSecurityConfig basicConfig(){
if(isOauthEnabled){
return new BasicSecurityConfig ();
}else{
return null;
}
}

但配置未加载。关于如何存档的任何提示??

最佳答案

您需要的是有条件的 bean 创建。尝试使用@Conditional。

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Conditional.html

您可以根据系统属性创建自定义条件。

您也可以使用 if 来完成此操作,但其可读性较差,并且会聚集您的配置,但作为一个简短的示例,请尝试以下操作:

@Bean
public SecurityConfig basicConfig(@Value("${authentication.type.oauth}" boolean isOauthEnabled)){
if(isOauthEnabled){
return new ResourceServerSecurityConfig();
}else{
return new BasicSecurityConfig ();
}
}

然而,这是一个肮脏的黑客行为。

关于java - 动态加载配置Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37258735/

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