我有一个 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/