본문 바로가기
Framework/Spring-boot

[Spring-boot] JOOQ 도입 후 구동 속도가 느려지는 현상

by dev_ss 2024. 11. 9.

 

 

 

 


발단

 

 

사이드 프로젝트로 스프링 부트에 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초 미만으로 다시 줄어든 것을 확인할 수 있었다.

 

 

 


 

 

 

 

반응형