26.AOP정리

강재영's avatar
Aug 27, 2024
26.AOP정리
 
 
💡
AOP란(Aspect-Oriented Programming) Spring AOP는 스프링 프레임워크에서 제공하는 기능 중 하나로 관점 지향프로그래밍을 지원하는 기술 Spring AOP는 로깅, 보안, 트랜잭션 관리 등과 같은 공통적인 관심사를 모듈화 하여 코드 중복을 줄이고 유지 보수성을 향상하는데 도움을 줍니다
 

1.라이브러리 등록

implementation 'org.springframework.boot:spring-boot-starter-aop' implementation 'org.springframework.boot:spring-boot-starter-validation'
 
 

2.어노테이션 만들기

package shop.mtcoding.blog.core; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Hello { }
 

3.발동

package shop.mtcoding.blog.core.error; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; @Component @Aspect //AOP 등록 public class GlobalValidationHandler { @Around("@annotation(shop.mtcoding.blog.core.Hello)") //@Before("@annotation(org.springframework.web.bind.annotation.GetMapping)") public Object hello1(ProceedingJoinPoint jp) throws Throwable { System.out.println("aop hello1 before 호출됨"); Object proceed = jp.proceed(); //@Hello 어노테이션이 붙은 함수 호출 System.out.println("aop hello1 after 호출됨"); System.out.println(proceed); return proceed; } }
 
UserCotroller
@Hello @GetMapping("login-form") public String loginForm() { System.out.println("login-form 메소드 실행됨"); return "user/login-form"; }
 
notion image
 
리플렉션이랑 어노테이션을 합쳐서 AOP 개발
 
예시로 트랜잭션과 같은 어노테이션이 이렇게 개발이 된다.
 
 
Share article

강재영 블로그