스프링 핵심 원리
[spring] PROXY, 싱글톤이 프로토 타입을 가지고 있을 경우의 문제와 해결
notx2wice
2021. 11. 2. 15:37
문제점
싱글톤 안의 프로토 타입의 빈은 싱글톤처럼 사용이 되는 문제.
해결 방안
1. 프로토 타입의 빈을 참조로 가지는 것이 아니라 필요한 순간 컨테이너에서 주입받아서 사용한다.
- 스프링 컨테이너에 종속적 이게 됨, 단위 테스트가 어려워짐
2.ObjectProvider사용
@Autowired
private ObjectProvider<PrototypeBean> prototypeBeanProvider;
public int logic() {
PrototypeBean prototypeBean = prototypeBeanProvider.getObject();
prototypeBean.addCount();
int count = prototypeBean.getCount();
return count;
}
//사용 예시
- 스프링에 의존적
3.JSR-330 Provider
프로토 타입뿐만이 아닌 리퀘스트 타입 등에도 적용될 수 있음
4. 프록시를 만들어 일단 실행시킨다.
->CGLIB라이브러리를 사용한 객체가 생성됨을 확인할 수 있음