Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- git
- npm
- log4j2
- migration
- Regular expression
- spring cloud
- java
- Effective Java 3/e
- Express
- mysql 5.5
- upgrade
- nodejs
- update
- eslint
- spring
- Spring Batch
- Webpack
- expire_logs_days
- current_date
- JavaScript
- regex
- log_bin
- 정규표현식
- Node
- Chunk
- MySQL
- Effective Java
- REACT
- REACTJS
- 퀵소트
Archives
- Today
- Total
내 세상
[Spring] Spring in Action, Chapter 4. 애스펙트 지향 스프링 본문
728x90
횡단 관심사(Cross-cutting concerns)
- 소프트웨어에서 로깅, 보안 트랜잭션 관리 같은 기능은 대부분의 애플리케이션에 공통적으로 나타나는 기능
DI - Appl. 객체 간 결합도를 낮추기 위함
AOP - 횡단 관심사와 이에 영향 받는 객체 간 결합도를 낮추기 위함
AOP (Aspect Object Programming)
- 기존 : 상속(inheritance), 위임(delegation)을 사용하여 공통 기능을 재사용함
→ But, 상속은 객체의 정적 구조에 의존하므로 복잡하고 깨지기 쉬운 구조가 되기 십상
→ 위임은 대상 객체에 대한 복잡한 호출로 인해 번거로움. - 현재 : 횡단 관심사를 aspect라는 특별한 클래스로 모듈화함
- 첫 번째 장점 : 전체 코드 기반에 흩어져 있는 관심 사항이 하나의 장소로 응집된다는 점
- 두 번째 장점 : 여타 서비스 모듈이 자신의 주요 관심 사항 또는 핵심 기능에 대한 코드만 포함하고 그 외 관심 사항은 모두 aspect로 옮겨지므로 코드가 깔끔해짐
AOP 용어 정의
- Advice
- aspect가 해야 할 작업
- aspect가 'what'을 'when'할지를 정의함.
- 'what' : 메소드 호출 이전 or 이후, 이전/이후, 메소드 예외
→ Before, After, After-returning(성공적 완료 이후), After-throwing(예외), Around(호출 전/후 모두)
- Join point
- advice를 적용할 수 있는 곳, Appl. 실행에 aspect를 끼워 넣을 수 있는 point
- Pointcut
- aspect가 advice할 join point의 영역을 좁히는 일을 함
- aspect가 'where'할지를 정의함.
- Aspect
- advice와 pointcut을 merge한 것.
- 두 가지 정보가 합쳐지면, aspect가 what을 when, where할지 정의됨.
- Introduction
- 기존 클래스에 코드 변경 없이도 새 메소드나 멤버 변수를 추가하는 기능
- Weaving
- 타깃 객체에 aspect를 적용해서 새로운 proxy 객체를 생성하는 절차
- asepect는 target 객체의 joint point로 weaving된다.
728x90
'Technical > Spring' 카테고리의 다른 글
[Spring] Spring in Action, Chapter 11. 객체 관계형 매핑을 통한 데이터 퍼시스팅 (0) | 2019.07.30 |
---|---|
[Spring] Spring in Action, Chapter 5. 스프링 웹 애플리케이션 만들기 (0) | 2019.07.30 |
[Spring] Spring in Action, Chapter 2. 빈 와이어링(묶기) (0) | 2019.07.30 |
[Spring] Spring in Action, Chapter 1. 스프링 속으로 (0) | 2019.07.30 |
[Spring] Spring ORM (0) | 2019.07.30 |