본문 바로가기
웹개발/스프링

스프링 4 AOP

by 인생여희 2020. 11. 8.

 

스프링 AOP란 업무의 본질적인 로직 부분만 해당 클래스안에 적고, 나머지 본질적이지 않은 처리는 외부로 꺼내어 정리하는 기술이다. 예를 들면, 로그처리나 예외 처리등 공통으로 할 수 있는 처리를 Aspect라는 하나의 단위로 모아서 어떤 오브젝트가 원래 해야 할 일만 할 수 있게 하는 기술이다.

 

aop

aop 용어 

 

애스펙트 

횡단 관심사의 동작과 그 횡단 관심사를 적용하는 소스 코드상의 포인트를 모은것.(동작과 동작을 적용하는 조건)

 

조인포인트

어드바이스가 실행하는 동작을 끼워넣을 수 있을때를 말한다.

 

어드바이스

조인 포인트에 실행되는 코드.(출력로그, 트랜잭션 로직 등)

 

포인트컷

포인트컷은 조인포인트와 어드바이스의 중간에 있으면서 처리가 조인 포인트에 이르렀을 때 어드바이스를 호출할지 선별한다.(조건)

 

 

어드바이스 종류

@Before 

 비즈니스 메소드 실행 전에 동작 한다.

 @AfterReturning

 비즈니스 메소드가 성공적으로 리턴되면 동작 한다.

 @AfterThrowing

 비즈니스 메소드 실행 중 예외가 발생하면 동작한다.

 @After 

 비즈니스 메소드가  실행된 후 무조건 실행 한다.

 @Around 

 호출 자체를 가로챈 뒤  비즈니스 메소드의 실행 전후에 처리할 로직을 삽입한다.

 

어노테이션을 이용한 AOP

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

aop-annotation.zip
0.04MB

 


 

 

예제2 - Bean정의 파일을 이용한 AOP (MyFirstAspect , applicationContext.xml 만 수정)

 

MyFirstAspect.java

 

 

applicationContext.xml

 

 

예제 파일 2

aop-config.zip
0.04MB

 

 

 

 

참고: 스프링 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