Spring 정리 11 -- 대면 (AOP) 1 -- 주해 설정 방식 AOP 구현

4527 단어 springAOPbeanlog4jIOC
AOP 는 동적 대 리 를 사용 하고 현실 적 인 것 이다. 위의 동적 대리 에서 우 리 는 몇 가지 개념 을 생각해 볼 수 있다. 우 리 는 검증 방법 을 쓰 고 현실 류 에서 우 리 는 몇 가지 방법 을 가지 고 이 방법 을 응용 할 수 있다.그러면 Spring AOP 에서 이런 개념 들 을 어떻게 표현 합 니까?
다음은 AOP 에서 몇 가지 중요 한 개념 을 살 펴 보 겠 습 니 다.
²        절단면 (Aspect)
절단면이것 은 아마도 AOP 에서 가장 중요 한 용어 일 것 이다.예 를 들 어 우리 가 위 에서 소개 한 사용자 권한 검증 은 서로 다른 신분 의 사용자 가 무엇 을 할 수 있 는 지, 무엇 을 할 수 없 는 지 모두 이 모듈 에서 판단 한다.이 모듈 이 호출 하 는 위치 도 보통 고정 되 어 있 습 니 다. 사용자 가 요청 을 한 후에 업무 논 리 를 실행 하기 전에.
²        연결 점 (JoinPoint)
프로그램 실행 과정의 어느 단계 점.만약 어떤 방법 이 호출 되 거나, 어떤 이상 이 던 져 진다 면.
²        처리 논리 (Advice)
어떤 연결 점 에서 사용 하 는 처리 논리, 처리 논리 호출 모델 은 보통 세 가지 가 있 습 니 다.
1.  Around
연결 점 전후 에 예비 처리 과정 과 사후 처리 과정 을 삽입 합 니 다.
2.  Before
연결 점 전에 만 예비 처리 과정 을 삽입 합 니 다.
3.  Throw
연결 점 에서 이상 을 던 질 때 이상 처 리 를 합 니 다.
²        접점 (PointCut)
처리 방식 (Advice) 이 언제 실 행 될 지 가리 키 는 일련의 연결 점 집합
1.1. 주석 설정 방식 으로 AOP 를 실현 합 니 다. 다음은 주석 라 이브 러 리 로 spring AOP 를 실현 하고 AOP 관련 개념 을 설명 하 는 방법 을 소개 합 니 다.
단계:
1)        spring 관련 의존 라 이브 러 리 추가
* SPRING_HOME/dist/spring.jar
* SPRING_HOME/lib/jakarta-commons/commons-logging.jar
* SPRING_HOME/lib/log4j/log4j-1.2.14.jar
* SPRING_HOME/lib/aspectj/*.jar
2)        Aspect 정의 절단면 사용
3)        Aspect 에서 Pointcut 와 Advice 를 정의 합 니 다.
4)        AspectJ 의 Annotation 지원 을 사용 하고 Aspect 클래스 와 대상 을 Ioc 용기 에 설정 합 니 다.
 
예 를 들 어 우 리 는 위의 동적 에이전트 의 그 예 를 바탕 으로 코드 는 다음 과 같다.
주석 설정 AOP 클래스, Security Handler. java 사용 하기
/**

 *   Aspect

 */

@Aspect

public class SecurityHandler {

    

    /**

     *   Pointcut,Pointcut     allAddMethod,

*             ,       

     *   

     * Pointcut         ,           (  Joinpoint)

     */

    @Pointcut("execution(* add*(..)) || execution(* del*(..))")

    private void allAddMethod(){};  

    /**

     *   Advice,               

     */

    @Before("allAddMethod()")

    private void checkSecurity() {

       System.out.println("------checkSecurity()------");

    }

    

}

  
applicationContext.xml:
<aop:aspectj-autoproxy/><!--         AOP   -->

<bean id="securityHandler" class="spring.SecurityHandler"/>           

<bean id="userManager" class="spring.UserManagerImpl"/>

  
UserManager.java
public interface UserManager {

 

    public void addUser(String username, String password);  

    public void deleteUser(int id); 

    public void modifyUser(int id, String username, 

String password);  

    public String findUserById(int id);

}

  
UserManagerImpl.java
public class UserManagerImpl implements UserManager {

    public void addUser(String username, String password) {     

       System.out.println("----UserManagerImpl.addUser()------");

    }

 

    public void deleteUser(int id) {       

       System.out.println("------UserManagerImpl.deleteUser()---");

    }

 

    public String findUserById(int id) {       

       System.out.println("----UserManagerImpl.findUserById()--");

       return null;

    }

 

   public void modifyUser(int id, String username, String password) { 

   System.out.println("-------UserManagerImpl.modifyUser()--");

    }

}
 


 테스트 단 코드:
public class Client {

    public static void main(String[] args) {

       BeanFactory factory = new 

ClassPathXmlApplicationContext("applicationContext.xml");

       

       UserManager userManager = 

(UserManager)factory.getBean("userManager");

       userManager.addUser("  ", "123");

    }

}

 
인쇄 정보:
-------checkSecurity()---------------
-------UserManagerImpl.addUser()-----

좋은 웹페이지 즐겨찾기