참조사이트1
참조사이트2
싱글톤패턴
참조사이트
요약:
1. 싱글톤 패턴은 객체를 단 하나 생성하고 재활용할수있게하는 디자인 패턴이다.
2. 메모리를 아낄수있는 장점이있지만, 동시에 많은 단점을 보유하고있다.
3. 하지만, 장점을 살리고 단점을 모두없앤 스프링 컨테이너가 탄생했다.
4. 싱글톤 패턴(스프링 컨테이너) 는 무결성하게 짜야한다.
proxy란
클라이언트가 사용하려고 하는 실제 대상인 것처럼 위장하여 클라이언트 클라이언트의 요청을 받아주어 처리하는 대리자 역할.
proxy간단 정리
- 클라이언트로부터 타겟을 대신해서 요청을 받는 대리인
- 실제 오브젝트인 타켓은 프록시를 통해 최종적으로 요청받아 처리함.
- 따라서 타켓은 자신의 기능에만 집중하고 부가기능은 프록시에게 위임함.
- 프록시의 호출 및 처리 순서 -
1) Proxy 호출
2) 보조 업무 처리
3) Proxy 처리 함수(메서드) 가 실제 구현 함수(메서드) 호출 및 주 업무 처리
4) 제어권이 다시 Proxy 함수(메서드)로 넘어오고 나머지 보조 업무 처리
5) 처리 작업 완료 후, 호출 함수(메서드)로 반환.
스프링에서의 프록시
참조사이트2

- 프록시 모드를 설정하게 되면, 의존성 주입을 통해 주입되는 빈은 실제 빈이 아닌 해당 빈을 상속받은 가짜 프록시 객체이다.
- 스프링은 CGLIB이라는 바이트 코드를 조작하는 라이브러리를 사용해서 프록시 객체를 주입해준다.
- 프록시 객체 내부에는 실제 빈을 요청하는 로직이 들어있어, 클라이언트의 요청이 오면 그때 실제 빈을 호출해준다.(실제 빈의 조회를 필요한 시점까지 지연 처리)
- 프록시 객체는 원래 빈을 상속받아서 만들어지기 때문에 클라이언트 입장에서는 실제 빈을 사용하는 것과 똑같은 방법으로 사용하면 된다.
- @Scope 애노테이션의 proxyMode 옵션을 사용하여 설정할 수 있다.
AOP와 연관되어있는데.. 이거 말고는 이해를 못해서 예시나 설명을 더이상 추가를못하겠다.