AOP, IOC, DI
- Dependency
- implementation ‘org.springframework.boot:spring-boot-starter-aop’
- AOP
- 스프링은 대부분 MVC 웹 어플리케이션에서는 3가지 Layer로 정의
- Web Layer : RestAPI 제공 Client 중심의 로직 적용
- Business Layer : 내부 정책에 따른 로직을 개발, 주로 해당 부분 개발
- Data Layer : 데이터 베이스 및 외부 연동 처리
- Annotation
- Aspect : 부가 기능 모듈화
- JoinPoint : 메소드의 정보
- Before : 메소드 실행 전
- After : 메소드 실행 후
- After-returning : 메소드가 정상적으로 실행된 후
- After-throwing : 예외가 발생한 후
- Around : 메소드 호출 이전, 이후, 예외발생 등 모든 시점
- Component : 직접 작성한 Class를 Bean으로 등록
- Ioc
- 스프링에서 일반적인 자바 객체를 new 로 생성하여 개발자가 관리하는 것이 아닌 Spring Container에 모두 맡긴다.
- 즉 개발자에서 프레임워크로 객체 관리의 권한이 넘어감(제어의 역전)
- DI
- 스프링이 알아서 객체의 생명주기 관리
- 객체를 관리하기위해 주입 받음
- 장점
- 의존성으로 부터 격리시켜 코드 테스트 용이
- DI 통해 불가능한 상황을 Mock와 같은 기술로 안정적 테스트
- 코드를 확장, 변경 시 영향 최소화(추상화)
- 순환참조를 막음