inblog logo
|
강재영 블로그
    springboot

    26.AOP정리

    강재영's avatar
    강재영
    Aug 27, 2024
    26.AOP정리
    Contents
    1.라이브러리 등록2.어노테이션 만들기3.발동
     
     
    💡
    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
    Contents
    1.라이브러리 등록2.어노테이션 만들기3.발동

    강재영 블로그

    RSS·Powered by Inblog