[스프링] AOP 정리
IoC
IoC 는 스프링 프레임워크의 중심이다.
옵젝트들을 생성하고 서로 연결하고 관리를하는 스프링 웹앱의 뇌?라고 해야하나
DI 를 이용해서 이런 일을 한다
쉽게 생각하자면.. 우리가 보통 옵젝트를 만들 때
“new ObjectName()” 이 코드를 적어줘야하는데 이제 그럴 필요 없음
IoC 는 두 1가지의 종류가 있다.
1. BeanFactory
2. ApplicationContext
Inversion of Control 는 전통적인 그런 control 흐름을 바꾼다 이런 뜻인데 이게 무슨 뜻이냐면
보통 전통적인 흐름은
main function 이 메뉴 라이브러리를 통해 함수를 호출하고 , 사용자에게 여러가지 옵션을 제공하고 하나의 옵션이 선택 되면 그 것을 main function 으로 돌려주는 거른 방식인데
IoC 는 이제 그 흐름을 바꾸는데 프로그램이 소프트웨어 프레임워크 위에 써지고 이 프레임워크는 behavioral 그리고 graphical elements 들에 기본적으로 알고 있음
우리가 작성하는 코드는 그냥 fill in the blank, 그 프레임워크가 모르는 부분? 그 빈칸들을 채워주기만 하면 된다.
DI
Dependency Injection 의 약자
IoC 를 구현하기 위해 사용 된다
DI 는 dependent 옵젝트를
Dependency Injection 은 세가지 종류가 있다.
1. 클라이언트 클라스
2. 서비스 클라스
3. Injector 클라스
보시다시피 Injector 클라스가 서비스 클라스를 만들고 Client 옵젝트한테 서비스 클라스를 “inject” 투입한다.
이 주입/투입하는 방법도 3가지 방법이 있다.
첫번째는 Constructor Injection는 서비스 즉 dependency 를 클라이언트 클라스 constructor 에 supply 함.
두 번째는 Property Injction. (Setter Injection) 클라이언트의 public property 를 이용해 supply 함
Method Injection는 클라이언트 클라스가 인터페이스를 구현을 하고 그 인터페이스의 페소드가 depenency 를 supply 함. 그래서 injector 가 클라이언트 클라스에 inject 할 dependency 를 이 인터페이스를 통해 함