Инъекция динамического значения в тег конструктора-arg

У меня есть сторонняя библиотека, которая принимает пароль в качестве конструктора args для класса, определенного как компонент Spring.

<bean id="coolClassId">
 </bean>

Но у меня проблема... политика безопасности запрещает мне иметь текстовый пароль. Поэтому я могу настроить другой компонент, который зашифрует пароль и расшифровывает его.

@Component("decryptor") 
public class DecryptorService {

 public String decrypt(String encryptedString) { 
 ///
 }
}

Есть ли какой-нибудь способ для моего XML, чтобы конструктор-arg получил свое значение, передав зашифрованное свойство этому DecryptorService?

1 ответ

Предполагая, что у вас есть доступ на запись к вашей стороне кода. Создайте класс @Configuration с помощью метода @Bean как @Bean ниже.

@Configuration
class ApplicationConfig {
 @Autowired DecryptorService decryptorService;
 @Autowired Properties props;

 @Bean
 public String clearTextPassword() {
 decryptorService.decrypt(props.getEncryptedPassword());
 }
}

Затем измените определение bean для использования ref

<bean id="coolClassId">
 </bean>

licensed under cc by-sa 3.0 with attribution.