인프런 커뮤니티 질문&답변

public display님의 프로필 이미지
public display

작성한 질문수

스프링 핵심 원리 - 기본편

스코프와 프록시

SingletonWithPrototype에서 Provider 대신 프록시 사용

작성

·

207

4

이전 강의에 싱클톤 빈(ClientBean)안에 PrototypeBean이 있는 예제에서 프로바이더 대신 프록시로 해봤는데, 프로토타입빈의 addCount()메소드를 타지 않아 count가 계속 0으로 나오더라구요  

프록시로 해결할 수 있는 경우가 있고 ObjectProvider로 해결해야하는 경우가 따로 있나요?

답변 1

1

안녕하세요. public display님, 공식 서포터즈 David입니다.

.
ProxyMode로 사용하게 되면 PrototypeBean 내부 메서드를 호출할 때마다 새로운 빈이 생성됩니다.

addCount();, getCount();를 순차적으로 호출하게 될텐데

addCount() 호출할 때 빈이 새롭게 생성되고

getCount() 호출할 때 빈이 새롭게 생성됩니다.

실제로 addCount() 로직을 탑니다만 getCount()를 호출할 때에는 새롭게 생성된 빈에서 호출하기 때문에 count가 0으로 보이는 것입니다.

addCount(), getCount() 내에서 prototypebean에 대한 정보를 출력하는 코드를 작성해보시면 서로 다른 빈임을 확인하실 수 있습니다.

Protytype에서의 ProxyMode를 사용할 때에 대한 동작은 아래 블로그를 참고해주세요.

https://renuevo.github.io/spring/scope/spring-scope/
.
감사합니다.

답변 보고 예제의 MyLogger를 prototype으로 해보니 request와 달리 메서드를 호출할때마다 새로운 객체가 만들어졌는데 이건 prototype 프록시모드의 특징으로 알면 될까요?

public display님의 프로필 이미지
public display

작성한 질문수

질문하기