스프링 AOP란 업무의 본질적인 로직 부분만 해당 클래스안에 적고, 나머지 본질적이지 않은 처리는 외부로 꺼내어 정리하는 기술이다. 예를 들면, 로그처리나 예외 처리등 공통으로 할 수 있는 처리를 Aspect라는 하나의 단위로 모아서 어떤 오브젝트가 원래 해야 할 일만 할 수 있게 하는 기술이다.
aop 용어
애스펙트
횡단 관심사의 동작과 그 횡단 관심사를 적용하는 소스 코드상의 포인트를 모은것.(동작과 동작을 적용하는 조건)
조인포인트
어드바이스가 실행하는 동작을 끼워넣을 수 있을때를 말한다.
어드바이스
조인 포인트에 실행되는 코드.(출력로그, 트랜잭션 로직 등)
포인트컷
포인트컷은 조인포인트와 어드바이스의 중간에 있으면서 처리가 조인 포인트에 이르렀을 때 어드바이스를 호출할지 선별한다.(조건)
어드바이스 종류
@Before
비즈니스 메소드 실행 전에 동작 한다.
@AfterReturning
비즈니스 메소드가 성공적으로 리턴되면 동작 한다.
@AfterThrowing
비즈니스 메소드 실행 중 예외가 발생하면 동작한다.
@After
비즈니스 메소드가 실행된 후 무조건 실행 한다.
@Around
호출 자체를 가로챈 뒤 비즈니스 메소드의 실행 전후에 처리할 로직을 삽입한다.
어노테이션을 이용한 AOP
시나리오 : ProductDao의 findProduct() 메소드가 호출될때마다 AOP 메소드를 호출 한다.
(전체 프로젝트는 스프링 DI 포스팅 부분에서 확인가능하다.)
ProductServiceImpl.java
MyFirstAspect.java - AOP 클래스
빈 정의 파일
출력결과
Hello Around! before *** 메서드를 호출하기 전에 나옵니다!
-----> aop:around 메서드명:findProduct
Hello Before! *** 메서드가 호출되기 전에 나옵니다!
-----> 메서드명:findProduct
-----> 인수:공책
Hello Around! after *** 메서드를 호출한 후에 나옵니다!
Hello After! *** 메서드가 호출된 후에 나옵니다!
Hello AfterReturning! *** 메서드를 호출한 후에 나옵니다!
-----> 메서드명:findProduct
-----> 인수:공책
Product [name=공책, price=100]
파일경로
예제 파일 1
예제2 - Bean정의 파일을 이용한 AOP (MyFirstAspect , applicationContext.xml 만 수정)
MyFirstAspect.java
applicationContext.xml
예제 파일 2
참고: 스프링 4입문 (한빛미디어)
'웹개발 > 스프링' 카테고리의 다른 글
스프링 4 MVC - part 1 (0) | 2020.11.10 |
---|---|
스프링 4 비즈니스 로직 설계와 트랜잭션 (0) | 2020.11.09 |
스프링 4 DAO 구현 (1) | 2020.11.08 |
스프링 4 Bean Config (0) | 2020.11.07 |
스프링 4 DI (0) | 2020.11.07 |