[에러] 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

+ Recent posts