aop:config 태그
AOP를 선언할 수 있게 해주는 태그이다.
aop:aspect 태그
더보기
특정 포인트컷을 정의하는 태그이며
해당 포인트컷을 실행할 참조(reference)값을 설정해줍니다.
속성
id: Aspect의 고유 아이디
ref: Aspect가 정의된 빈의 이름
aop:pointcut 태그
더보기
포인트컷을 정의해줍니다.
속성
id: 포인트컷의 고유 아이디
expression: 포인트컷 표현식
aop:before 태그
더보기
메서드 실행 전 실행
속성
method: 호출할 메소드의 이름
pointcut-ref: 포인트컷의 이름
pointcut: 적용할 포인트컷 표현식
aop:after 태그
더보기
메서드가 정상적으로 리턴된 후 실행
속성
method: 호출할 메소드의 이름
pointcut-ref: 포인트컷의 이름
pointcut: 적용할 포인트컷 표현식
returning: 리턴 값을 저장할 변수명
간단한 예제
pom.xml (의존성 주입)
더보기
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
applicationContext.xml (스프링 컨테이너)
더보기
<bean class="com.nsd.app.biz.common.TestAdvice" id="logAdvice"/>
<aop:config>
<aop:pointcut id="board_obj" expression="execution(* com.nsd.app.biz.board.BoardServiceImpl.insert(..))"/>
<aop:aspect ref="logAdvice">
<aop:after method="insert_log" pointcut-ref="board_obj"/>
</aop:aspect>
</aop:config>
TestAdvice.java
더보기
import com.nsd.app.biz.board.BoardDTO;
import org.aspectj.lang.JoinPoint;
public class TestAdvice {
public void insert_log(JoinPoint jp) {//바인드 변수
System.out.println("TestAdvice.java log 넘어온 데이터 ["+jp.toString()+"]");
String methodName = jp.getSignature().getName();
System.out.println("TestAdvice.java log 현재 이 어드바이스랑 연결된 조인포인트의 메서드명");
System.out.println("TestAdvice.java log ["+methodName+"]");
Object[] args = jp.getArgs();
BoardDTO boardDTO = (BoardDTO) args[0];
System.out.println("현재 이 어드바이스랑 연결된 조인포인트의 매개변수 정보");
System.out.println(boardDTO.getBoard_writer_id() + "님이 글을 DB에 등록되었습니다.");
}
}
728x90