[에러] no matching editors or conversion strategy found
1. 환경
Spring |
4.3.6 (SpringMVC 기준) |
Java |
1.8.0_92 |
Tomcat |
8.0.42 |
암호화 관련 라이브러리 |
jasypt-spring31-1.9.2.jar |
jasypt-1.9.2.jar |
|
bcprov-jdk15on-1.56.jar |
|
bcpkix-jdk15on-1.56.jar |
2. 에러 메세지
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configurationEncryptor' defined in file [C:\sample\server\apache-tomcat-8.0.42\webapps\sample-pjt\WEB-INF\classes\META-INF\config\context-datasource-dev.xml]: Cannot resolve reference to bean 'environmentVariablesConfiguration' while setting bean property 'config'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'environmentVariablesConfiguration' defined in file [C:\Sample\server\apache-tomcat-8.0.42\webapps\sample-pjt\WEB-INF\classes\META-INF\config\context-datasource-dev.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.lang.String' to required type 'java.security.Provider' for property 'provider'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'java.security.Provider' for property 'provider': no matching editors or conversion strategy found |
3. AS-IS 설정/소스
- database 관련 설정파일 context-datasource.xml 파일 내 프로퍼티 파일 암호화 환경 설정
<!-- 암호화 provider 선언 --> <bean id="bouncyCastleProvider" class="org.bouncycastle.jce.provider.BouncyCastleProvider"/> <!-- 암호화 환경 설정 --> <bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig"> <property name="provider" value="bouncyCastleProvider" /> <property name="algorithm" value="PBEWITHSHA256AND128BITAES-CBC-BC" /> <property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" /> </bean> <!-- 암호화 실행 모듈 선언 --> <bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor"> <property name="config" ref="environmentVariablesConfiguration" /> <property name="password" value="easyframework" /> </bean> |
4. 에러 원인
- environmentVariablesConfiguration bean에서는 bouncyCastleProvider 라는 bean을 참조로 하여 암호화 환경을 설정하고 있는데,
이때, provider 속성에 해당하는 참조 bean bouncyCastleProvider를 'ref'로 선언해야 하는 데 value 로 선언하여 이를 provider 속성에
String 값으로 넣으려 하다가 나는 에러다. 객체를 참조하는 부분이니 value 가 아니라 ref로 바꿔줘야 정상 동작한다. ㅎㅎㅎ 이런 실수를 ㅜ
처음보는 에러 메세지여서 정리해둔닷
5. 해결
- 아래와 같이 설정 변경해주니, 정상 기동하였다.
<!-- 암호화 provider 선언 --> <bean id="bouncyCastleProvider" class="org.bouncycastle.jce.provider.BouncyCastleProvider"/> <!-- 암호화 환경 설정 --> <bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig"> <property name="provider" ref="bouncyCastleProvider" /> <property name="algorithm" value="PBEWITHSHA256AND128BITAES-CBC-BC" /> <property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" /> </bean> <!-- 암호화 실행 모듈 선언 --> <bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor"> <property name="config" ref="environmentVariablesConfiguration" /> <property name="password" value="easyframework" /> </bean> |
'Spring' 카테고리의 다른 글
(작성중) dispatcher-servlet.xml 설정 (0) | 2017.04.16 |
---|---|
spring - profile (0) | 2017.03.19 |
[Spring] Transaction 관리 (0) | 2017.03.12 |
Spring - BeanNameViewResolver (0) | 2017.01.29 |