[\ # 0x 0044] Spring AOP 학습 (3): 예 와 기본 개념

3179 단어 DAOspringAOPxml
여전히 LogInterceptor 의 예 입 니 다.다음은 beans. xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
	<context:annotation-config />
	<context:component-scan base-package="com.bjsxt"/>
 	<aop:aspectj-autoproxy />
</beans>

op 의 namespace 와 < op: aspectj - autoproxy / > 를 추가 하 는 것 을 주의 하 십시오.LogInterceptor 의 코드 는 다음 과 같 습 니 다.
package com.bjsxt.aop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LogInterceptor {
	@Pointcut("execution(public * com.bjsxt.service..*.add(..))")
	public void myMethod(){};
	
	@Before("myMethod()")
	public void before() {
		System.out.println("method before");
	}
	
	@Around("myMethod()")
	public void aroundMethod(ProceedingJoinPoint pjp) throws Throwable {
		System.out.println("method around start");
		pjp.proceed();
		System.out.println("method around end");
	}
	
}

여기 서 두 가 지 를 주의해 야 한다.
(1) 여기 에는 @ Component 가 있어 야 합 니 다. Spring 에 새로운 Login Interceptor 대상 이 있어 야 합 니 다.이렇게 해야만 LoginInterceptor 대상 을 UserDAOImpl 에 짜 넣 을 수 있 습 니 다.
(2) execution (public void com. bjsxt. dao. UserDAOImpl. save (com. bjsxt. model. User) "), 이것 은 AspectJ 문법 입 니 다. execution 은 방법 이 실 행 될 때 삽입 하 는 것 을 표시 합 니 다. 속성 초기 화, 클래스 불 러 올 때 와 같은 다른 접근 점 이 있 습 니 다.
 
이 예 에 근거 하여 우 리 는 AOP 의 개념 을 이해한다.
(1) Target: UserdaoImpl 은 짠 Target 입 니 다.
(2) JoinPoint: "execution (public void save ()" 여기 가 JoinPoint, 즉 착안점 입 니 다.
(3) Advice: before () 방법 은 Advice, Advice is an action taken by an Aspect at a certain JoinPoint
(4) AdviceType: @ Before 는 AdviceType 으로 Advice that executes before a JoinPoint 임 을 표시 합 니 다.
(5) PointCut: 어댑터 (@ Pointcut ("execution (public * com. bjsxt. service. *. add (.)") 에서 알 수 있 듯 이 PointCut 는 JoinPoint 의 집합 이지 만 PointCut 은 하나의 방법 에 의존 해 야 합 니 다.
(6) Aspect: LogInterceptor 와 같은 종류, 또는 LogInterceptor 와 같은 논리 (즉 기록 로그) 는 Aspect 입 니 다.

좋은 웹페이지 즐겨찾기