스프링의 특징2 [DI, IoC] Spring Bean 요약
의존성 주입(DI)을 통해 IoC 컨테이너가 객체(Bean)의 생성부터 생명주기 관리까지 제어를 하여
제어권이 역전되었음을 IoC 라고 합니다.
여기서 객체(Bean)는 Spring Bean을 말하며
Spring Bean은 스프링 프레임워크의 IoC 컨테이너에 의해 등록, 생성, 조회, 관계 설정이 되는 객체
ApplicationContext가 알고있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미
이전 글 : https://yuni-spring.tistory.com/4
AOP(Aspect Oriented Programming)
관점 지향 프로그래밍
애플리케이션에서의 관심사의 분리(기능의 분리)
핵심적인 기능에서 부가적인 기능을 분리
분리한 부가기능을 Aspect라는 모듈형태로 개발하는 방법
관점지향
어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나눠보고
그 관점을 기준으로 각각 모듈화 하겠다는 것
모듈화
어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것
AOP란
비지니스 로직의 핵심기능들 중에서
부가적인 측면에서 보았을 때 공통적인 측면을 추출하자는 것 ( before(), after() )
AOP의 특징
접근 제어 및 부가 기능을 추가하기 위해 프록시 패턴 기반의 AOP 구현체
Spring Bean 에만 AOP 적용 가능
모든 AOP 기능을 제공하는 것이 아닌 스프링 IoC와 연동하여
중복코드, 프록시 클래스 작성의 번거로움, 객체들 간 복잡도 증가에 대한 해결책을 지원하는 것이 목적
스프링에서 프록시란?
'대리인' 이라는 의미를 내포
스프링 AOP에서의 프록시란 대리하여 업무를 처리
함수 호출자는 주요 업무가 아닌 보조 업무를 프록시에게 맡기고, 프록시는 내부적으로 이러한 보조 업무를 처리
프록시 패턴 기반
- spring은 타겟(target) 객체에 대한 프록시를 만들어서 제공
- 프록시는 어드바이스를 타켓 객체에 적용하면서 생성되는 객체
- 프록시 객체를 쓰는 이유는 접근 제어 및 부가기능을 추가하기 위함
* 프록시가 호출을 가로챔
- 프록시는 타겟 객체에 대한 호출을 가로챈 다음 어드바이스의 부가기능 로직을 수행하고 난 후에 타겟의 핵심기능 로직을 호출함 ( 전처리 어드바이스 )
- 타겟의 핵심기능 로직 메서드를 호출한 후에 부가기능(어드바이스)을 수행하는 경우도 있다.(후처리 어드바이스)
AOP 용어
타켓(Target) : 부가 기능을 부여할 대상
에스펙트(Aspect) : 부가 기능 모듈, 핵심 기능에 부가되어 의미를 갖는 특별한 모듈
어드바이스(Advice) : 실질적으로 부가기능을 담은 구현체
타켓 오브젝트에 종속되지 않아 부가 기능에 집중 가능
에스펙트가 '무엇'을 '언제' 할지를 정의
포인트컷(PointCut) : 부가 기능이 적용할 대상(메서드)을 선정하는 방법
어드바이스를 적용할 조인포인트를 선별하는 기능을 정의한 모듈
조인포인트(JoinPoint) : 어드바이스가 적용될 수 있는 위치
AOP 예제
메서드 호출 시(핵심 기능) 시간을 측정해주는(부가 기능) 예제
9일 오전까지 시도해봤지만 작동을 하지않아 잠시 보류
'스프링' 카테고리의 다른 글
스프링의 특징 5 [Annotation] Java Configuration (0) | 2021.09.09 |
---|---|
스프링의 특징 4 [PSA] (0) | 2021.09.09 |
스프링의 특징 2 [DI, IoC] Spring Bean (0) | 2021.09.08 |
스프링의 특징 1 [DI, IoC] (0) | 2021.09.08 |
Spring Framework [개념] (0) | 2021.09.08 |