将动态值注入bean的constructor-arg标记中

时间:2018-03-07 02:05:38

标签: java spring autowired

我有一个3d派对库,它接受一个密码作为定义为Spring bean的类的构造函数args。

<bean class="com.thirdparty.CoolClass" id="coolClassId">
   <constructor-arg index="1" value="clearTextPassword" />
</bean>

但我有问题...安全政策禁止我有明确的文字密码。所以我可以设置另一个接受加密密码并对其进行解密的bean。

@Component("decryptor") 
public class DecryptorService {

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

是否存在我的XML,以便构造函数arg通过将加密属性传递给此DecryptorService来获取其值?

1 个答案:

答案 0 :(得分:1)

假设您对代码的一方有写访问权限。 使用@Configuration方法创建@Bean课程,如下所示

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

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

然后将bean定义更改为使用ref

<bean class="com.thirdparty.CoolClass" id="coolClassId">
   <constructor-arg index="1" ref="clearTextPassword" />
</bean>