root-context.xml로 bean 설정 시 일어난 에러들 (1)

라이라·2023년 6월 17일
0

비어있는 샘플DAO와 Service 클래스를 root-context.xml을 이용해서 Bean 등록하여 작동하게 하는지 테스트코드를 돌리기로 했다.

1)

class file has wrong version 61.0, should be 52.0

테스트를 돌려보니 이런 메시지가 뜨며 테스트 에러가 났다.

컴파일 시 jdk와 프로젝트의 버전이 달라 일어나는 에러였다.
현재 java8을 사용중인데 spring은 6.0.0을 다운받았다.
java8에 맞는 spring은 5.x.x이다.

2)

Expression parsing failed; nested exception is java.lang.NoSuchMethodError

메서드를 찾을 수 없어 에러를 발생시킨다는 멘트와 함께 테스트가 끝나버렸다.

  1. 메서드가 진짜 존재하지 않는 경우
    • 사용한 메서드가 내부 API인 Assertions를 이용해서 인자값인 SampleService(비어있음)을 전해주는 것 뿐이라 이건 아니었음.
  2. 타이핑 오류
  3. 매개변수 일치 오류
  4. 내부 참조 lib이 없는지
  5. classpath로 설정한 class의 중복이 있는지

전부 해당되지 않았고 디버깅모드로 돌려보니
private MemberName resolve() ...
뜬금없이 MemberName 타입의 resolve()라는 메서드가 호출되고 있었다.
내부를 들여다보니 assert()가 보여 이건 Assertion문제인가싶어 maven 설정 파일을 열어 최신 spring 버전이 아닌 stable한 버전으로 바꿔주기로 했다.

3)

WARN : org.springframework.context.support.GenericApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException:

빈 생성시에 발생한 에러

  • spring, core, test를 maven을 통해 다운로드 해 진행했는데 버전이 서로 다르면 실행이 되지 않는 경우가 있다고 하여 버전일치 시켜주었다.
  • 그럼에도 계속되어 문제가 되었고 설정한 root-context.xml의 문제가 아닐까 싶어 설정을 보았는데
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean class="org.lsm.spring01.sample.SampleDAO" />
    <bean class="org.lsm.spring01.sample.SampleService" />
</beans>

보는데에 문제가 없었지만 에러코드를 보니 여기서 발생하는 것이 분명했다.
혹시 주소값을 잘못 줘서 bean을 못 읽는건가 싶었지만 그것도 아니었고
내 경우에는 bean파일을 셀프클로징 한게 잘못이었다.
원래 bean에는 property와 name값이 들어가는데 내 경우는 그냥 테스트만 하려고 했기에 값이 없다고 판단해서 (그래도 닫기는 해야하니까) 셀프클로징을 했다.

<bean class="org.lsm.spring01.sample.SampleDAO"></bean>
<bean class="org.lsm.spring01.sample.SampleService"></bean>

찾아봤지만 정보를 못찾아 생각하건데 아마도 내부가 비어있는 bean을 넣으면 spring이 임의의 property와 name값을 넣어 생성해주는 것이 아닐까 싶다.

처음 보는 에러라 당황했고 시간도 많이 보냈지만
왜 이런 문제가 발생했을까 생각하고 어떤 흐름으로 와서 이 에러가 나왔고 어떻게 해결해야할지 많이 고민하게 해줘서 좋은 시간이었다고 생각한다.

profile
혼자 보려고 올리는 용도

0개의 댓글