donaricano-btn

 AOP_1


1. What is AOP?

- AOP란 업무 등 특정 책임이 있는 클래스(예로 주문 클래스, 계좌클래스) 안에 본질적인 처리만 기술하고, 본질적이지 않은 처리는 밖으로 꺼내는 기술(로그, 트랜잭션)


- AOP를 도입함으로 오브젝트가 원래 실행해야 하는 본질적인 처리와 그밖에 횡단관심사(Crosscutting concerns)로 불리는, 복수의 오브젝트에 걸쳐 기술되기 쉬운 처리를 분리해 모듈성을 높인다


1_1. AOP

1) Aspect

- Advice(동작) + Pointcut(동작 적용조건)

- 횡단관심사의 동작그 횡단관심사를 적용하는 소스 코드상의 포인트를 모은 것\


2) Joinpoint

- 어드바이스가 실행하는 동작을 끼워 넣을 수 있는 때

- 메소드가 정확히는 메소드가 호출 될 떄와 메소드가 원래 호출한 곳으로 돌아갈 떄를 말한다


3) Advice

- 조인포인트에서 실행되는 코드


4) Pointcut

- 조인포인트와 어드바이스의 중간에 위치 하여 처리가 조인포인트에 이르렀을때 어드바이스를 호출할지 선별한다




2. Advice

2_1. Advice의 종류

        • Before : 조인포인트 앞에서 실행할 어드바이스
        • After :  조인포인트 뒤에서 실행할 어드바이스
        • AfterReturning : 조인포인트가 완전히 정상 종료한 다음에 실행되는 어드바이스
        • Around : 조인포인트 앞뒤에서 실행되는 어드바이스
        • AfterThrowing : 조인포인트에서 예외가 발생했을 떄 실행되는 어드바이스


3. Proxy

- 프록시를 이용한 AOP 구현


1) Q클래스엔 R 인터페이스 타입의 인스턴스 변수가 있으며 @Autowired 되어있다

2) RImpl 클래스의 어느 메소드를 실행해도 어드바이스가 동작한다고 가정

3) DIxAOP 컨테이너는 R인터페이스를 구현한 프록시 클래스의 인스턴스 자동생하여 Q클래스의 R인터페이스형 인스턴스에 인젝션해버린다

4) Q클래스는 인젝션 된 내용이 R인지 프록시인지 알수 없다

5) 자동 생성된 프록시 클래스의 인스턴스는 진짜 RImpl 클래스로 구현된 메소드를 호출하게 되어있고 종류에 따라 RImpl 클래스의 메소드를 호출하기 전후에 어드바이스를 호출한다 




'Back-End > SpringFrame_1' 카테고리의 다른 글

[Spring] DI_2  (0) 2016.07.17
[Spring] DI_1  (0) 2016.07.16
[Spring]8_4 Skill of Spring  (0) 2016.02.28
[Spring]8_2.Purpose of Spring - 스프링의 목적  (0) 2016.02.28
[Spring]8_1.Definition of Spring - 스프링이란?  (0) 2016.02.28
블로그 이미지

리딩리드

,