스프링 AOP 주석 기반 구성

A, 스프링 AOP 주석 기반 구성

      는 클래스의 로그를 생성 한 후 (각 방법 로깅을 첨가하는 방법을 수행 임) AccountService의 향상 및 할 필요가 생성 가정 1. 그 구현 로깅 단계;

// 클래스 주입 스프링 용기 
@Component ( "로거" ) 
@Aspect //는 현재 클래스의 슬라이스를 나타내고,는 클래스 
공개  클래스 로거 { 
    @Pointcut ( "실행 (com.li.service.impl *. *. * (. .)) " )
     개인  무효 PT1을 () { 

    } 
    / ** 
     * 사전 통지 
     * / 
    @Before ( "PT1 () " )
     공공  무효 beforePrintLog () { 
        에서 System.out.println ( "사전 알림 클래스 로거 상기 방법은 beforePrintLog를 로깅 시작 ... " ) 
    } 

    / ** 
     * 후방 통지 
     * / 
    @AfterReturning ( "PT1 () " )
     공중 보이드 afterReturningPrintLog는 () { 
        에서 System.out.println는 ( "포스트 알림 방법 afterReturningPrintLog Logger 클래스는 기록을 시작한다 ..." ) 
    } 

    / ** 
     * 이상 통지 
     * / 
    @AfterThrowing ( "PT1 ()" )
     공중  무효 afterThrowingPrintLog는 () { 
        에서 System.out.println는 ( "이상 통지 방법 afterThrowingPrintLog Logger 클래스 로깅을 시작 ..." ) 
    } 

    / ** 
     * 최종 통지 
     * / 
    @After ( "PT1 ()" )
     공중  공극 afterPrintLog ( ) { 
        에서 System.out.println는 ( "최종 통지 방법 afterPrintLog Logger 클래스는 기록을 시작한다 ..." );
    } 
    / **
     * 서라운드 통지 
     : 질문 * 
     우리가 조언을 주위에 구성하면 *, 진입 점 방법이 수행되지 않지만, 통지 방법의 구현 
     * 분석 : 
     * 주위에 조언 동적 프록시 명확한 진입 점 메서드 호출을 가지고, 우리는하지 않았다 
     * 해결 : 
     * 봄이 인터페이스를 제공합니다 ProceedingJoinPoint이 방법은 진입 점 방법을 명시 적으로 호출하는 것과 같습니다 () 인터페이스로 진행 
     * 인터페이스가 프로그램 실행시, 조언 주위 메소드 매개 변수로 사용할 수 있습니다, 스프링 프레임 워크는 우리의 구현 클래스에 대한 인터페이스를 제공합니다 우리가 사용 
     * 알림 주위 장식은 
     수동 제어 방법은 코드에서 수행 할 때 향상 될 수있다 * 
     * / 
    // @Around ( "PT1 ()") 
    공공 객체 aroundPrintLog (ProceedingJoinPoint PJP) { 
        객체 rtValue = ;
         은 try { 
            객체 []에 args = pjp.getArgs () 
            에서 System.out.println ("AroundPrintLog 방법 로거 클래스 ... 로깅을 사전은-시작" ); 
            rtValue이 pjp.proceed (인수를 =); // 명시 적으로 호출 비즈니스 계층 방법 (진입 점 방법) 가지고 
            에서 System.out.println을 ( "Logger 클래스 방법은 ... "aroundPrintLog 게시물을 로깅 시작 )
             반환 rtValue을; 
        } 캐치 (Throwable의 T가) { 
            에서 System.out.println이 ( "방법 aroundPrintLog Logger 클래스는 예외를 로깅 시작 ... " );
             던져  새로운 새로운 의 RuntimeException을을 (T) 
        } 마침내 { 
            에서 System.out.println는 ( "방법 aroundPrintLog Logger 클래스 최종 기록 시작 ..." ); 
        } 
    } 
}

@Service ( "AccountService에" )
 공개  수업 AccountServiceImpl 구현 IAccountService { 

    공공  무효 saveAccount () { 
        에서 System.out.println ( "막아" ); 
    } 

    공공  무효 updateAccount는 ( INT I) { 
        에서 System.out.println는 ( "수행 업데이트 "+ I); 
    } 

    공공  INT의 deleteAccount () { 
        에서 System.out.println ( "삭제 " );
         반환 0 ; 
    } 
}
 
 

 

 

 

  2. 구성 열기 코멘트

    

 <! - 스캔 한 패키지로 컨테이너를 생성하는 봄 구성 -> 
    < 컨텍스트 : 구성 요소 - 스캔 에 대한 자료-패키지 페널티 = "com.li" >가 </ 컨텍스트 : 구성 요소 스캔 > 
   <! - 구성 봄 열기 코멘트 AOP 지원 -> 
    < AOP : - 더 AspectJ를 자동 프록시 > </ AOP : AspectJ를 자동 프록시 - 더 >

 

추천

출처www.cnblogs.com/cqyp/p/12512925.html