我正在使用Spring自动配置来连接数据库。为此,我在属性文件中的属性下面添加了
spring.datasource.url=jdbc:oracle:thin:@ABCDE2D.com:1888:ABCDE2D1
spring.datasource.username=user
spring.datasource.password=password
spring.datasource.driver-class-oracle.jdbc.driver.OracleDriver
在dao类中,我有@Autowired NamedParameterJdbcTemplate并直接使用它从数据库中获取数据。
到这里为止一切正常。
现在,我需要加密属性文件中的密码。 为此,我做了以下事情:
- 在pom中添加了jasypt-spring-boot-starter
- 在属性文件中添加了spring.datasource.password = ENC(NoIv2c + WQYF3LenN0tDYPA ==)
- 在属性文件中添加了jasypt.encryptor.password = key
现在我遇到以下错误:
Failed to bind properties under 'spring.datasource.password' to
java.lang.String:
Reason: Failed to bind properties under 'spring.datasource.password' to
java.lang.String
答案 0 :(得分:3)
我提供了一些基本指导,如下所示。
您需要在属性文件中添加以下两个参数,以使应用程序正常工作。这是假设您正在使用默认加密算法进行加密。如果您正在使用其他打印机,请确保进行相应的更改。
jasypt.encryptor.iv-generator-classname = org.jasypt.iv.NoIvGenerator jasypt.encryptor.algorithm = PBEWithMD5AndDES
您可以参考更多详细信息 https://nirmalbalasooriya.blogspot.com/2020/02/spring-boot-property-encryption-using.html
答案 1 :(得分:0)
在我的情况下,我输入了错误的jasypt.encryptor.password。 例如,下面给出的示例是我在application.properties中设置的属性:
jasypt.encryptor.password=abc
而不是abc,我在加密密码时给了jasypt作为我的秘密密钥,所以加密的密码是错误的。然后抛出此错误。 后来我意识到并发现密钥不正确。 然后输入正确的密钥,即abc,然后对我有用。 愚蠢的错误,但这花了我4个小时。希望对其他人有用。
答案 2 :(得分:0)
如果您使用 jasypt 依赖项,请确保:
spring.datasource.password = Enc
和
jasypt.encryptor.password = key
其中 Enc 是加密密码,key 是您用来生成加密密码的密钥。