본문 바로가기
Spring

Spring AOP - AspectJ Pointcut Expression 하이라이팅

by WangTak 2022. 3. 16.
반응형

최근 영한님의 Spring Core Advanced 강의를 들으면서 Proxy, BeanPostProcessor, Advisor, Advice, Pointcut 등등 방대한 양의 Spring 관련 기술을 습득하고 있습니다.

 

나중에 강의를 다 들은 후에 복습하고 토이 프로젝트를 진행하여 적용해보고 이리저리 곱씹어 본 후에 느낀 점, AOP 관련 내용을 정리해볼까 합니다.

 

오늘의 포스팅 내용은 강의를 들으면서 라이브 코딩을 하던 와중에 AspectJExpressionPointcut을 통해 pointcut의 표현식을 정의하는 코드를 접했습니다. 그런데 영한님의 pointcut 표현식 코드에는 JPQL을 작성할 때 처럼 Code Assistant, 코드 하이라이팅 기능이 있어서 자동 완성을 제공하였지만, 제 IntelliJ는 pointcut 표현식을 문자열로 인식했습니다. 그래서 이 문자열을 IntelliJ에서 pointcut 표현식으로 인지하게끔 설정하는 내용을 정리하도록 하겠습니다.

 

※ 코드 하이라이팅 기능은 IntelliJ의 Ultimate(유료 버전)에서만 지원한다는 것을 참고해주시기 바랍니다.

 

강의를 들으면서 라이브 코딩을 한 pointcut 표현식은 다음과 같습니다.

Pointcut Expression 미적용

pointcut.setExpression("..."); 의 매개변수가 문자열로 인식하는 것을 알 수 있습니다. 물론 문자열이 맞습니다. 그러나 영한님께서 AspectJExpressionPointcut은 실무에서 정말 많이 사용되며, 그에 따른 문법도 있다고 설명해주셨습니다. 그렇기 때문에 이와 관련된 도움을 받을 수 있으면 좋기 때문에 설정을 바로 하도록 하겠습니다.

 

문자열로 되어있는 표현식을 클릭하게 되면 사진처럼 왼쪽에 전구 모양이 등장하게 됩니다. 전구 모양을 클릭하면 다음과 같은 메뉴가 나오게 됩니다. 2개의 메뉴 중 "Inject language or reference"를 클릭해줍니다.

Pointcut Expression 적용 과정

 

그러면 사진 처럼 여러 언어가 등장하게 됩니다. 스크롤을 해서 아래쪽으로 내려가보면 PointcutExpression이 있습니다. 

(이 메뉴는 알파벳 기준으로 정렬되어 있습니다.)

 

언어 목록
PointcutExpression

 

PointcutExpression을 클릭해주면 다음과 같이 문자열로 보였던 코드가 하이라이팅이 되고 뭔가 의미를 내포하고 있는 거 같은 코드가 되었습니다. 또한, setExpression에서 Ctrl + Space (윈도우 기준입니당)를 하게 되면 PointcutExpression의 문법과 관련된 자동 완성 기능도 지원하는 것을 알 수 있습니다.

 

자동 완성 기능

 

 

반응형

'Spring' 카테고리의 다른 글

API 문서 자동화 - Swagger  (0) 2021.12.03
API 문서 자동화 - Spring REST Docs  (0) 2021.11.27