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 |