[Spring Triangle] IOC, AOP, PSA
Updated:
DI(Dependenxy Injection)
- 부품을 갈아끼우거나 업데이트하려면 일체형보다 조립형으로 느슨한 결합으로 만들어야 함.
- 이때, Spring에서는 DI 테크닉을 쓰게 되는데, Dependency(ak. 부품)들을 Injection(ak. 조립)하는 작업을 말한다. ``` B b = new B(); //Dependency A a = new A();
a.setB(b); //injection ```
DI의 두 가지 방법
- Setter Injection : Setter 메서드를 이용해 주입하는 방법
- Construction Injection : 생성자를 이용해 주입하는 방법
- 조립형은 직접 조립해야하는 불편함이 있는데, 조립을 해주는 서비스를 받으면 편해진다. 소프트웨어에서 부품을 조립해주는 도구가 있는데, 바로 spring이다. 조립을 원하는 부품과 어떤 부품 결합을 원하는지만 설정해주면 spring이 조립을 해준다.
IOC(Inversion Of Control)
- 주문서대로 객체를 생성하면 담을 그릇이 필요한대, 일반적으로 그릇을 컨테이너라고 한다.
- 조립은 제일 먼저 작은 부품이 만들어지고, 큰 부품이 만들어지고 결합하는 역순으로 이루어진다. 즉, IOC는 조립의 순서를 역순으로 생성하는 컨테이너를 말한다.
AOP(Aspect Oriented Programming)
- 사용자의 요구사항인 주업무 로직과 달리 개발자가 프로그램을 구현하기 위해 필요한 코드들이 존재한다. 개발자의 필요에 따라 코드를 끼워넣게 되는데 사용자는 존재를 모른다.
- 개발/운영자 관점에서 추가로 만드는 로직으로 관점 지향 프로그래밍이라 한다. 객체지향 프로그래밍보다 큰 개념이다.
- 로그처리, 보안처리, 트랜잭션처리
- 관점이 다른 코드를 쉽게 뺐다 넣을 수 있는 방법론이 바로 AOP다.
- 공통 관심 사항 vs 핵심 관심 사항 분리
- 원하는 곳에 공통 관심 사항 적용