java spring-重写从属性文件接收的属性值
我有一个场景,从属性文件中获取编码的密码值。我有自己的解密实现,所以我想从我的java类中解密密码,然后想进一步使用解密后的值,在它引用的地方 比如说java spring-重写从属性文件接收的属性值,java,spring,encryption,properties,Java,Spring,Encryption,Properties,我有一个场景,从属性文件中获取编码的密码值。我有自己的解密实现,所以我想从我的java类中解密密码,然后想进一步使用解密后的值,在它引用的地方 比如说 在上面的代码中,我需要实现如下内容,对于特定于密码属性,因为rest属性很好,但密码在使用之前需要解密 (下面的实现是错误的,但我刚才提到要给出更多明确的想法) 基本上,我需要对从属性文件获得的密码进行解密,然后才能将其用于建立数据库连接 谢谢你的时间和帮助 您需要创建一个自定义数据源对象来解密密码 <bean id="myData
在上面的代码中,我需要实现如下内容,对于特定于密码属性,因为rest属性很好,但密码在使用之前需要解密
(下面的实现是错误的,但我刚才提到要给出更多明确的想法)
基本上,我需要对从属性文件获得的密码进行解密,然后才能将其用于建立数据库连接
谢谢你的时间和帮助 您需要创建一个自定义数据源对象来解密密码
<bean id="myDataSource" class="foo.bar.PasswordDecryptingDataSource"
... // more properties
p:encryptedPassword="${myPropertey.password}"
>
因为您使用的是Spring,所以我强烈建议您查看
PropertyResourceConfigurator
类。
看
特别是查看<代码>转换属性(String FraveType,String RealTyValuy)方法,并考虑创建一个重写它的类。然后,您将能够将自定义解密逻辑添加到重写的方法中,该方法将在每次Spring访问该属性时运行
直接从文档中获取: 允许从属性资源(即属性文件)配置单个bean属性值。用于自定义配置文件。。。覆盖在应用程序上下文中配置的bean属性 布莱恩,塞缪尔 非常感谢您的快速帮助,这两种方法都能解决我的问题 我已经实现了对PropertyPlaceHolderConfigure的扩展,考虑到将来是否还会有更多的属性被编码,我不想将解密逻辑限制到DataSource 只要我的2美分,代码片段,我已经实现了,这可以帮助一些人,谁可能会发现类似的情况
文件:${foo.config.location}
下面是课堂
`公共类PropertyUtil扩展PropertyPlaceHolderConfigure{
@Override
public String convertProperty(String propertyName, String propertyValue){
return super.convertProperty(propertyName, decrypt(propertyValue));
}
private String decrypt(String){
// logical implementation
}
`
@Override
public String convertProperty(String propertyName, String propertyValue){
return super.convertProperty(propertyName, decrypt(propertyValue));
}
private String decrypt(String){
// logical implementation
}