- 스프링 강의 끝
- 구현 1문제
spring keyword
* 싱글톤빈과 프로토타입 빈을 같이 사용할때 프로토타입 빈을 계속 생성하는 방법
- DL( (Dependency Lookup) : 의존관계 조회 )을 대신해주는 기능 사용 (ObjectProvider or ObjectFactory)
- 스프링에서 제공
- ObjectProvider가 ObjectFactory보다 좀 더 많은 기능을 제공
- JSP-330 Provider : 'javax.inject:javax.inject:1' 라이브러리 추가해주기
- 자바 표준임.
- '프로토타입 빈 생성해주는 기능'만을 제공함.
* 내 의문점 1
프로토타입 빈을 언제사용함? : 매번 새로운 객체가 필요할때... -> 그게 언젠데?
드물게 컨테이너가 오브젝트를 만들고 초기화해줘야 하는 경우가 존재한다.
바로 DI 때문이다.
매번 새롭게 만들어지는 오브젝트가 컨테이너 내의 빈을 사용해야 하는 경우이다.
참고 : happyer님 블로그
1.3-IoC 컨테이너 : 프로토타입과 스코프
IoC 컨테이너 : 프로토타입과 스코프 스프링의 빈은 기본적으로 싱글톤으로 만들어진다. 요청이 있을때마다 매번 애플리케이션 로직을 담은 오브젝트를 새로 만드는 것은 비효율적이기 때문이
happyer16.tistory.com
* ObjectProvider 와 JSP-330 Provider 중에 어떤것을 사용하면 좋을까?
1. 만약 코드를 스프링이 아닌 다른 컨테이너에서 사용해야 한다면 : JSP-330 Provider(자바표준)를 사용해야함
2. 스프링은 이 기능(프로토타입 빈을 새로 생성하는 기능)외에도 더 다양하고 편리한 기능을 제공하기 때문에 1번의 이유가 아니라면 스프링에서 제공하는 ObjectProvider를 사용하는것이 좋다.
* 웹 스코프
- 웹 환경에서만 동작
- 스코프의 종료시점까지 관리함 -> 종료 메소드 호출