【jasypt】jasypt升级到3.x报错Failed to bind properties under ‘属性名‘ to java.lang.String

springboot 2.x工程,将jasypt升级到3.x-->3.0.3后,配置一个属性为加密,工程启动后报错如下


                            
 ####  #    # #####  ###### 
#    # #    # #    # #      
#      #    # #####  #####  
#      #    # #    # #      
#    # #    # #    # #      
 ####   ####  #####  ###### 
                            
                                                                                                                                                                       

Application Version: 
Spring Boot Version: 2.4.2 (v2.4.2)
2021-02-12 19:05:06.093  INFO 45956 --- [           main] com.cube.CubeBootApplication             : Starting CubeBootApplication using Java 1.8.0_181 on mymac.local with PID 45956 (/Users/chiwei/myspace/git_project/cube-project/target/classes started by chiwei in /Users/chiwei/myspace/git_project/cube-project)
2021-02-12 19:05:06.098  INFO 45956 --- [           main] com.cube.CubeBootApplication             : The following profiles are active: dev
2021-02-12 19:05:07.951  INFO 45956 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2021-02-12 19:05:07.956  INFO 45956 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2021-02-12 19:05:08.012  INFO 45956 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 18 ms. Found 0 Redis repository interfaces.
2021-02-12 19:05:08.391  INFO 45956 --- [           main] ptablePropertiesBeanFactoryPostProcessor : Post-processing PropertySource instances
2021-02-12 19:05:08.427  INFO 45956 --- [           main] c.u.j.EncryptablePropertySourceConverter : Converting PropertySource configurationProperties [org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource] to AOP Proxy
2021-02-12 19:05:08.429  INFO 45956 --- [           main] c.u.j.EncryptablePropertySourceConverter : Converting PropertySource servletConfigInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper
2021-02-12 19:05:08.429  INFO 45956 --- [           main] c.u.j.EncryptablePropertySourceConverter : Converting PropertySource servletContextInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper
2021-02-12 19:05:08.430  INFO 45956 --- [           main] c.u.j.EncryptablePropertySourceConverter : Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper
2021-02-12 19:05:08.430  INFO 45956 --- [           main] c.u.j.EncryptablePropertySourceConverter : Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableSystemEnvironmentPropertySourceWrapper
2021-02-12 19:05:08.430  INFO 45956 --- [           main] c.u.j.EncryptablePropertySourceConverter : Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper
2021-02-12 19:05:08.430  INFO 45956 --- [           main] c.u.j.EncryptablePropertySourceConverter : Converting PropertySource Config resource 'file [config/application-dev.properties]' via location 'optional:file:./config/' [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper
2021-02-12 19:05:08.430  INFO 45956 --- [           main] c.u.j.EncryptablePropertySourceConverter : Converting PropertySource Config resource 'file [config/application.properties]' via location 'optional:file:./config/' [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper
2021-02-12 19:05:08.597  INFO 45956 --- [           main] c.u.j.filter.DefaultLazyPropertyFilter   : Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter
2021-02-12 19:05:08.889  INFO 45956 --- [           main] c.u.j.r.DefaultLazyPropertyResolver      : Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver
2021-02-12 19:05:08.893  INFO 45956 --- [           main] c.u.j.d.DefaultLazyPropertyDetector      : Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector
2021-02-12 19:05:09.360  INFO 45956 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 9276 (http)
2021-02-12 19:05:09.379  INFO 45956 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-02-12 19:05:09.379  INFO 45956 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.41]
2021-02-12 19:05:09.554  INFO 45956 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/cube]   : Initializing Spring embedded WebApplicationContext
2021-02-12 19:05:09.554  INFO 45956 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3319 ms
2021-02-12 19:05:09.811  INFO 45956 --- [           main] c.u.j.encryptor.DefaultLazyEncryptor     : String Encryptor custom Bean not found with name 'jasyptStringEncryptor'. Initializing Default String Encryptor
2021-02-12 19:05:09.833  INFO 45956 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.algorithm, using default value: PBEWITHHMACSHA512ANDAES_256
2021-02-12 19:05:09.834  INFO 45956 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.key-obtention-iterations, using default value: 1000
2021-02-12 19:05:09.834  INFO 45956 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.pool-size, using default value: 1
2021-02-12 19:05:09.835  INFO 45956 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.provider-name, using default value: null
2021-02-12 19:05:09.835  INFO 45956 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.provider-class-name, using default value: null
2021-02-12 19:05:09.835  INFO 45956 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.salt-generator-classname, using default value: org.jasypt.salt.RandomSaltGenerator
2021-02-12 19:05:09.837  INFO 45956 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.iv-generator-classname, using default value: org.jasypt.iv.RandomIvGenerator
2021-02-12 19:05:09.838  INFO 45956 --- [           main] c.u.j.c.StringEncryptorBuilder           : Encryptor config not found for property jasypt.encryptor.string-output-type, using default value: base64
2021-02-12 19:05:10.134  WARN 45956 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.boot.context.properties.ConfigurationPropertiesBindException: Error creating bean with name 'myConfig': Could not bind properties to 'MyConfig' : prefix=cube.boot, ignoreInvalidFields=false, ignoreUnknownFields=true; nested exception is org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'cube.boot.system-name' to java.lang.String
2021-02-12 19:05:10.138  INFO 45956 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2021-02-12 19:05:10.155  INFO 45956 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-02-12 19:05:10.219 ERROR 45956 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'cube.boot.system-name' to java.lang.String:

    Reason: Failed to bind properties under 'cube.boot.system-name' to java.lang.String

Action:

Update your application's configuration


Failed to bind properties under 'cube.boot.system-name' to java.lang.String:

报错信息说明自定义的属性无法绑定到java.lang.String这个类型上,猜测基本是解密失败了,解不出完整的一个字符串;

网上搜索后基本要求将jasypt降级到2.x版本,亲测的确可行,application配置如下

jasypt.encryptor.password=mycmccsalt
jasypt.encryptor.algorithm= PBEWithMD5AndDES

jasypt github主页上其实有这个问题的issue,还挺长的,认证看完就找到答案了

https://github.com/ulisesbocchio/jasypt-spring-boot/issues/154

因为3.x版本的默认加密算法变了,所以对应配置文件加密算法配置得修改,同时加密的方法也得用新的加密算法计算出加密字符串

对应新的配置文件内容如下:

jasypt.encryptor.password=mycmccsalt
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator
jasypt.encryptor.algorithm=PBEWithMD5AndTripleDES

启动访问,问题解决。

 

 

 

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页