AOP_Pointcut
AOP
: Aspect Oriented Programming
사용자의 요구사항 말고 요구사항을 수반하기 위한 코드들(프로그램을 구현하기 위한, 테스트하기 위한 코드들)은 관점이 다른 업무이다.
로그처리, 보안처리, 트랜잭션 처리 등의 주업무가 아닌 업무들을 핵심 로직과 쉽게 빼고 결합시킬 수 있는 방법론,
관점을 어떻게 분리하고 결합시켜 프로그램을 만들것인가에 대한 방법론이 AOP이다.
AOP를 구현시 스프링을 이용하면 쉽게 빼고 꽂을 수 있다.
AOP는 두가지 방법으로 사용 가능하다.
1.configuration에 설정
2.annotation으로 설정
Pointcut
BoardServiceImpl
package com.springbook.biz.board.Impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.springbook.biz.board.BoardService;
import com.springbook.biz.board.BoardVO;
/*
로그 처리를 코드 내에 핵심 로직과 결합하지 않고
이곳에는 핵심 로직만 남긴다
그리고 로그는 Spring AOP에서 자동으로 결합시켜준다
*/
@Service("boardService")
public class BoardServiceImpl implements BoardService {
@Autowired
private BoardDAO boardDAO;
@Override
public void insertBoard(BoardVO vo) {
boardDAO.insertBoard(vo);
}
@Override
public void updateBoard(BoardVO vo) {
boardDAO.updateBoard(vo);
}
@Override
public void deleteBoard(BoardVO vo) {
boardDAO.deleteBoard(vo);
}
@Override
public BoardVO getBoard(BoardVO vo) {
return boardDAO.getBoard(vo);
}
@Override
public List<BoardVO> getBoardList(BoardVO vo) {
return boardDAO.getBoardList(vo);
}
}
aspectjweaver 추가
aop 체크
추가된 aop 확인
aop 동작 시점
applicationContext.xml
모든 메서드 호출 바로 직전에 printLog 메서드를 껴놓겠다.
로그 객체를 핵심 로직에 결합하지 않았지만 aop를 통해 동작한다
- log 객체를 바꿔도(LogMyAdvice로) 잘 작동한다.
- pointcut을 여러개 만들어서 로그로 지칭할 대상을 만들 수 있다
특정 메서드 대상으로도 지정 가능하다.
get메서드 실행 전에만 로그가 동작하는 것을 확인할 수 있다.
- after로 바꾸면 메서드 호출 후에 로깅이 동작한다.
- after throwing & after
예외를 일부러 발생시키기 위해 코드 추가
(vo 객체 생성시 0으로 초기화되므로 무조건 0)
- Around
전 후로 잘 실행된다.
Author And Source
이 문제에 관하여(AOP_Pointcut), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jinkyung/AOP저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)