AOPアドバイザタイプ


example code

// hello.aop.order 패키지와 하위패키지이면서 클래스 이름 패턴이 Service 인것
    @Around("hello.aop.order.aop.Pointcuts.orderAndService()")
    public Object doTransaction(ProceedingJoinPoint joinPoint) throws Throwable {
        try {
            // @Before
            log.info("[Transaction Start] {}", joinPoint.getSignature());
            final Object result = joinPoint.proceed();
            // @AfterReturning
            log.info("[Transaction End] {}", joinPoint.getSignature());
            return result;
        } catch (IllegalStateException e) {
            // @AfterThrowing
            log.info("[Transaction Rollback] {}", joinPoint.getSignature());
            throw e;
        } finally {
            // @After
            log.info("[Resource Release] {}", joinPoint.getSignature());
        }
    }
  • @Around:メソッド呼び出しの前後で実行され、接続ポイントを実行するかどうか、戻り値を変換するかどうか、異常を変換するかどうかを選択するなど、すべての機能が使用できます.
  • @Before:Joinpointの実行前に実行します.
  • @AfterReturn:Joinpointが正常に完了したら実行します.
  • @AfterThrowing:メソッドが例外を放出したときに実行します.
  • @After:Joinpoint正常運転または異常運転(finally)