우아한 프로그래밍

1. 문제상황


데이터베이스의 설정을 완료하고 트랜젝션을 설정하기 위해서 1번과 같이 추가적인 스프링 설정파일을 만들어서 파라미터로 넣어준 것이다. 여기까지 설정은 아주 좋았다.

데이터베이스 설정도 정확하게 완료됬고, 마이바티스 설정도 정확하게 완료되었다
하지만 문제는 트랜젝션을 설정하는데서 완전빡돌게 만들어 버렸다.

아무리 잘 설정을 하고 수십번 고쳐보아도 절대로 적용되지 않았다.

[WEB.XML]

[추가적인 설정파일인 context-datasource.xml]

설정은 완벽했는데 왜 안되는것인가? 몇일을 삽질 또 삽질 무한 삽질을 진행했다.

그리고 결국에는 해결을 하는데.....

2. 해결방법


문제점은 바로 context-servlet.xml에서 만들어진 BEAN들은 하위 context에서 읽지 못한다는 것이다.
아래의 그림 처럼 자동으로 BEAN을 읽도록 설정을 하였더니 하위 컨텍스트에서 읽지 못하는 현상이 발생한 것이다.

해결하기 위해서 context-servlet.xml에서는 controller의 스캔하도록 하고
하위 컨텍스트에서 service와 repository 객체를 스캔하도록 하고 AOP를 설정하니 정상적으로 트랜젝션이 걸렸다.

profile

우아한 프로그래밍

@자바조아!

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!