2019. 2. 5. 06:53ㆍSpring Boot
스프링 부트의 중요 3가지 핵심 요소 들인 IoC/DI, Aop, Portable Service Abstractions 이 있다. 오늘은 그중 Aop에 대해서 정리 해 보려 한다.
Aop란
Aspect Oriented programming 관점 지향 프로그래밍 이라고한다.
Aop는 애플리케이션 전체에 걸쳐 사용 되는 기능을 재사용 하도록 하는 것이다. 예를 들어 두 클래스가 있다.
Class A() { Class B() {
aaaaa aaaaaa
red dog
bbbbb bbbbb
} }
이런식으로 두 클래스가 있다. 두개의 클래스는 서로 너무 다르다. 하나는 색깔 빨강, 하나는 동물 개 이다. 두개의 부모 클래스는 서로 너무 다르다.
하지만 겹치는 부분들이 있는데(aaaaa, bbbbb) 상속을 받지 못한다면 어떻게 처리를 해야 할까? 요런 것들을 횡단 관심 사(cross cutting concern)라고 한다.
Aop 어디에 쓰일까?
대표적으로 웹사이트를 만든다면 로그인 기능, 트랜잭션, 보안 등이 필요할 것이다.
예를 들어서 유저가 사이트에서 활동을 하려면 로그인 된 상태에서만 활동을 할 수 있다고 가정해보자. 글을 쓰고, 다른 사람들의 답변을 쓰고, 읽고, 파일을 업로드 하고 등등이 있을텐데, 그런 메소드들 하나하나에 전부 로그인 기능을 따로 할 수는 없을 것이다.
이렇게 공통된 기능을 한곳에 넣은 뒤 재사용 하는 기법이다.
크게 Aop의 장점은 두개가 있다.
1. 어플리케이션 전체에 흩어진 공통 기능이 하나의 장소에서 관리된다.
2. 다른 서비스 모듈들이 본인의 목적에 충실 할 수 있다는 것
Aop 용어
타켓(Target) : 부가기능을 부여할 대상 또는 충고를 받는 대상.
에스펙트(Aspect) : 핵심기능이 부가되어 의미를 갖는 특별한 모듈.
우리가 객체를 Object라고 부르듯이 Aop를 사용 할 때는 Aspect라고 부른다.
에스펙트는 아래에서 알게 될 부가될 기능을 정의한 어드바이스, 어드바이스를 어디에 적용할지를 정하는 포인트 컷을 함께 갖고있다.
어드바이스(Advice) : 부가기능을 담은 구현체.
어드바이스는 타켓에 종속 되어있기에, 순수한 부가기능만 집중한다.
또한 @Around, @Before, @After 등 에스펙트가 언제 사용 될지를 정해주기도 한다.
포인트 컷(PointCut) : 부가기능이 적용될 대상(메소드)를 선정하는 방법이다.
조인 포인트(JoinPoint) : 어드바이스가 적용될 수 있는 위치, 예외발생 시점 과 같이 특정 작업이 시작되는 시점을 포인트 컷이라고 한다.를 이야기한다.
위빙 (Weaving) : 어드바이스에 로직을 적용하는 것을 위빙이라고 한다. 스프링에서는 프록시를 통하여 Aop를 사용하는데, Aspect를 타겟 객체에 제공하여 새로운 프록시 객체를 생성하는 과정을 말한다.
프록시 (Proxy) : 타겟을 감싸서 타겟의 요청을 대신 받아주는 랩핑(Wrapping) 오브젝트.
호출자 (클라이언트)에서 타겟을 호출하게 되면 타겟이 아닌 타겟을 감싸고 있는 프록시가 호출되어, 타겟 메소드 실행전에 선처리, 타겟 메소드 실행 후, 후처리를 실행시키도록 구성되어있다.
'Spring Boot' 카테고리의 다른 글
Ajax란 무엇일까? (0) | 2019.05.15 |
---|---|
스프링 프레임워크(Spring Framework)에 대해서 (3) | 2019.05.05 |
IoC(제어의 역전) 와 DI(의존성 주입)이란 (0) | 2019.01.05 |
Spring Boots 기초2 (0) | 2018.11.18 |