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



>我有一个 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();
}
}

我已经创建了电子邮件密码的bean,以便在调用ExternalContext类的init方法时该值可用。

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

有没有其他选择,我不需要创建电子邮件密码的豆子?

我正在使用弹簧启动 2.1.15.发布

简单地说,创建一个对象,填写字段并调用init()

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

最新更新