gpt4 book ai didi

java - FusionAuthClient 单例

转载 作者:行者123 更新时间:2023-12-01 18:44:35 26 4
gpt4 key购买 nike

我想在带有Spring Boot的微服务环境中实现FusionAuth,所以我想为java制作FusionAuth客户端的单例。但我在静态上下文中使用变量 apiKey, baseUrl 时遇到错误。

@Configuration
public class FusionAuthClientConfig {

private static FusionAuthClient INSTANCE = null;

@Value("${fusionAuth.apiKey}")
private String apiKey;

@Value("${fusionAuth.baseUrl}")
private String baseUrl;

public static FusionAuthClient getInstance() {
if(INSTANCE == null)
INSTANCE = new FusionAuthClient(apiKey, baseUrl);

return INSTANCE;
}
}

无论如何,单例类的作用域被使用了吗?我的意思是对于并发环境和性能,我应该为每个融合身份验证请求使用客户端吗?

最佳答案

您的private static FusionAuthClient INSTANCE = null 是不必要的。默认情况下,bean 的作用域为单例。 @参见:Bean Scopes

由于您使用的是@Configuration,因此您只需将FusionAuthClientConfig更改为以下内容,您就可以在应用程序的其他位置引用它: @Autowired 属性。

@Configuration
public class FusionAuthClientConfig {

@Value("${fusionAuth.apiKey}")
private String apiKey;

@Value("${fusionAuth.baseUrl}")
private String baseUrl;

@Bean
public FusionAuthClient fusionAuthClient() {
return new FusionAuthClient(apiKey, baseUrl);
}
}

现在您的 fusionAuthClient bean 可以在其他地方引用,如下所示:

@Service
//or @Component etc
public class MyService {
private final FusionAuthClient fusionAuthClient;

public MyService(FusionAuthClient fusionAuthClient) {
this.fusionAuthClient = fusionAuthClient;
}

public void doTheThing() {
// use this.fusionAuthClient
}
}

关于java - FusionAuthClient 单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59865965/

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