gpt4 book ai didi

java - 在 java @configuration 类中初始化 init 方法属性的更好方法

转载 作者:行者123 更新时间:2023-12-01 14:31:56 26 4
gpt4 key购买 nike

我有一个 ExternalContext 类的依赖项,定义如下。 依赖是jar添加的,不允许修改。

public class ExternalContext {

private String emailUsername;
private String emailPassword;
// setters & getters
private InitialContext initialContext;

public void init() {
Hashtable<String, String> props = new Hashtable<String, String>();

if (!(emailUsername == null)) {
props.put("SEC_PRINCIPAL", emailUsername);
}
if (emailPassword != null) {
props.put("SEC_CREDENTIALS", emailPassword);
}
initialContext = new InitialContext(props);
}
}

我需要创建上述类的 bean 并通过调用它的 init 方法来初始化属性。这就是我想要做的事情

@Configuration
public class AppConfig {

@Value("${email.username}")
private String emailUsername;

@Value("${email.password}")
private String password;

private final PasswordDecryptor passwordDecryptor;

public AppConfig(PasswordDecryptor passwordDecryptor) {
this.passwordDecryptor = passwordDecryptor;
}

@Bean
public String emailPassword(){
return passwordDecryptor.decrypt(password);
}

@Bean(initMethod = "init" )
public ExternalContext externalContext(){
return new ExternalContext();
}
}

我已经创建了 emailPassword bean,以便在调用 ExternalContext 类的 init 方法时可以使用该值。

在这种情况下是否有更好的初始化属性的方法?

在我不需要创建 emailPassword bean 的地方有什么替代方法吗?

我正在使用 spring boot 2.1.15.RELEASE

最佳答案

很简单,创建一个对象,填充字段并调用init():

@Bean
public ExternalContext externalContext() {
ExternalContext ctx = new ExternalContext();
ctx.setEmailUsername(emailUsername);
ctx.setEmailPassword(passwordDecryptor.decrypt(password));
ctx.init();
return ctx;
}

关于java - 在 java @configuration 类中初始化 init 方法属性的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62357788/

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