객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀜
객체를 생성하고 관리하고 책임지고 의존성을 관리해주는 컨테이너
POJO(Plain Old Java Object)란?
주로 특정 자바 모델이나 기능, 프레임워크를 따르지 않는 Java Object를 지칭하며,
대표적으로 Java Bean 객체가 있음
ex) getter / setter
Bean은 IoC 컨테이너가 관리하는 객체
각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결
스프링의 DI가 의존성의 주입이라면 AOP는 코드 주입
주요 기능과 핵심 기능 구현을 위한 부가적인 기능 구현을 분리하여 각각의 관점별로 묶어서 개발하는 방식
Aspect: 흩어져있는 관심사인 부가 기능들이 모듈화한 것
Target: 모듈화된 부가 기능(Aspect)을 수행해줘야 하는 주요 비지니스 클래스 or 메서드 등을 의미
Advice: Target 에 종속되지 않고 순수하게 부가 기능만 실제로 구현된 부분, 부가 기능 구현체
JointPoint: 구현된 부가 기능(Advice)을 실제 수행할 지점
PointCut: 부가기능을 수행할 지점(Advice)에 대한 스펙 정의서
Advisor: PointCut + Advice (스프링 AOP 에서 사용하는 특별한 용어)
다른 여러 모듈을 사용함에 있어서 별도의 추상화 레이어 제공 (slf4j)
참고
https://spring.io/
https://dev-coco.tistory.com/80
https://zion830.tistory.com/109
https://velog.io/@dusdn2424