Framework/Spring-boot
[Spring-boot] JOOQ 도입 후 구동 속도가 느려지는 현상
dev_ss
2024. 11. 9. 21:08
발단
사이드 프로젝트로 스프링 부트에 JOOQ를 도입하면서 발생한 일이었다.
애플리케이션 구동 시간이 원래 10초 내외로 나왔으나, JOOQ를 도입하면서 구동 시간이 1분이 넘어가게 되었다.
자료를 조사해 보니 이는 JOOQ를 사용할 때 AOP에서 발생하는 문제였고, 해당 부분을 수정하여 해결하였다.
해결
기존 코드는 execution을 사용했었는데, 구동 시 적용되는 범위가 너무 넓어서 구동이 느려진다는 것이었다.
// 기존 코드
private static final String CONTROLLER = "execution(* com.myproject.app.controller..*.*(..))";
private static final String SERVICE = "execution(* com.myproject.app.service..*.*(..))";
private static final String CONTROLLER_OR_SERVICE = "execution(* com.myproject.app.controller..*.*(..)) || execution(* com.myproject.app.service..*.*(..))";
이를 아래와 같이 within을 활용해서 변경해 주었다.
execution과 within은 범위 설정에 대한 기입 방식도 차이가 있어서, 이도 수정해 주었다.
// 변경된 코드
private static final String CONTROLLER = "within(com.myproject.app.controller..*)";
private static final String SERVICE = "within(com.myproject.app.service..*)";
private static final String CONTROLLER_OR_SERVICE = "within(com.myproject.app.controller..*) || within(com.myproject.app.service..*)";
execution은 메서드 단위의 매칭을 하는 반면, within은 타입(클래스/인터페이스) 단위의 매칭을 한다는 차이점이 있다.
변경 사항을 적용하고 나니 80초가량 되던 구동 시간이 10초 미만으로 다시 줄어든 것을 확인할 수 있었다.
반응형