에러 모음

XmlBeanDefinitionStoreException

junani0v0 2024. 5. 9. 00:15

< 에러 메시지 >

4월 28, 2024 12:23:48 오후 org.apache.catalina.core.StandardContext listenerStart

SEVERE: Context initialized 이벤트를 [org.springframework.web.context.ContextLoaderListener] 클래스의 인스턴스인 리스너에 전송하는 동안 예외 발생

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 47 in XML document from file [C:\dev\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\04_springJdbc_Self\WEB-INF\classes\context-root.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 47; columnNumber: 98; The prefix "beans" for element "beans:bean" is not bound.

 

XmlBeanDefinitionStoreException 

스프링 애플리케이션 컨텍스트에서 xml형식의 빈 정의를 로드할때 주로 발생

 - 빈정의 파일의 오류 ( XML 빈 정의 파일에 구문 오류가 있거나, 빈 정의가 올바르게 구성되지 않은 경우 발생 )

 - 빈클래스 누락 ( 빈 정의에서 참조하는 클래스가 존재하지 않거나, 클래스 패스에 없는 경우에 발생 )

 - 빈을 로드하거나 구성할때 문제 ( 빈 정의에서 지정된 빈을 로드하거나 구성하는 동안 발생하는 문제로 인해 발생 )

 

< 원인 >

<beans:bean id="encryptorConfig" class="org.jasypt.encryption.pbe.config.EnvironmentPBEConfig">
  <beans:property name="algorithm" value="PBEWithMD5AndDES" />
  <beans:property name="passwordEnvName" value="TEST_KEY" />
</beans:bean>

<beans:bean id="encryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
  <beans:property name="config" ref="encryptorConfig" />
</beans:bean>

<beans:bean class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer">
  <beans:constructor-arg ref="encryptor" />
  <beans:property name="locations">
    <beans:list>
      <beans:value>classpath:config/db-context-loc.properties</beans:value>
    </beans:list>
  </beans:property>
</beans:bean>

beans가 앞에 다 붙어있어 beans안에 beans가 있어서 에러

 

< 해결 >

<!-- 암호화 -->
<bean id="encryptorConfig" class="org.jasypt.encryption.pbe.config.EnvironmentPBEConfig">
  <property name="algorithm" value="PBEWithMD5AndDES" />
  <property name="password" value="jun" />
</bean>

<bean id="encryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
  <property name="config" ref="encryptorConfig" />
</bean>

<bean class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer">
  <constructor-arg ref="encryptor" />
  <property name="locations">
    <list>
      <value>classpath:/application.properties</beans:value>
    </list>
  </property>
</bean>

bean의 앞에 붙어있는 beans 제거