주입

2012-05-14 5 views
0

은 하나 개의 솔루션이있다 :주입

<bean name="1" class="My1" /> 

<bean name="2" class="My2" scope="prototype"> 
    <property name="field1" ref="1"> 
</bean> 

<bean name="3" class="My3" scope="prototype"> 
    <property name="field1" ref="1"> 
</bean> 

하지만 난 그렇게하고 싶지 않아. 나는 그 bean "1"이 어플리케이션의 모든 곳에서 액세스 가능하고 Spring이 그것을 제어하기를 원하지 않는다. 나는 그 bean "2"와 "3"이 같은 인스턴스를 얻길 원한다. 나는 그것을 얻을 수 있습니까? 방법?

답변

4

정말 어떤 문제인지 잘 모르겠습니다. 기본적으로 스프링 빈은 싱글 톤입니다. 따라서 예에서 23은 이미 1의 동일한 인스턴스를 가지고 있습니다. 1의 스프링 제어 인스턴스는 실제로 애플리케이션의 모든 곳에 액세스 할 수있는 것은 아니며, 주입 된 곳에서만 액세스 할 수 있습니다.

+0

예. 하지만 이제는 내 응용 프로그램의 모든 곳에 ApplicationContext를 가져올 수 있으며이 객체를 이름으로 가져올 수 있습니다. – itun

+0

@itun 'ApplicationContext'가 같을 경우에만. 나는 아직도 그 문제가 무엇인지 잘 모른다. 스프링 관리 빈을 원한다면 컨텍스트에서 사용할 수 있어야합니다. 그렇지 않으면 필요로하는 오브젝트에서 사용할 수 없습니다. 봄 관리 빈을 원하지 않는다면,'1'을 싱글 톤으로 만드십시오. –

+0

문제는 "2"와 "3"빈이 다시 요청 될 때 동일한 빈 "1"이 필요하지 않지만 여전히 해당 속성이 동일한 빈 "1"인스턴스를 가져야한다는 것입니다. – itun

0

xml에 명시 적으로 bean "1"을 지정하지 않고 컨트롤러의 첫 번째 요청에서 해당 객체를 만든 다음 세션에 넣으면 동일한 인스턴스로 전체 응용 프로그램에서 액세스 할 수 있습니다. . 원하는 컨트롤러에서만 액세스 할 수 있습니다.

희망이 도움이됩니다.

건배.