scope singleton de spring - por contêiner por bean

9

Estou fazendo esta pergunta em referência à minha pergunta:

escopo do singleton da primavera

O singleton da primavera é definido no manual de referência como por contêiner por bean .

por contêiner significa que gostamos:

ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml")
MyBean myobj=(MyBean)context.getBean("myBean"); //myBean is of singleton scope.
MyBean myobj1=(MyBean)context.getBean("myBean");

Beans.xml:

<bean id="myBean" class="MyBean"/>

Em seguida, myobj==myobj1 será verdadeiro. Significa ambos apontando para mesma instância .

Para a parte por bean da frase por contêiner por bean , fiquei um pouco confuso. Estou certo em seguir por por bean :

Se gostarmos

ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml")
MyBean myobj=(MyBean)context.getBean("myBean"); 
MyBean myobj1=(MyBean)context.getBean("mySecondBean");

Beans.xml:

<bean id="myBean" class="MyBean"/>
<bean id="mySecondBean" class="MyBean"/>

Em seguida, myobj==myobj1 será falso. Significa então que são duas instâncias diferentes ?

    
por a Learner 16.10.2012 в 17:22
fonte

3 respostas

6

Isso está correto.

Se isso ajudar, você também pode pensar em beans Spring como Instances que você teria criado de outra forma manualmente em seu código Java usando o construtor.

Ao definir o bean no arquivo XML Spring, esse bean (Instance) é registrado com o App Context do Spring e, em seguida, essa instância pode ser passada para as outras áreas do código.

Ao criar um novo bean, você está efetivamente criando uma nova instância. Então potencialmente você poderia criar qualquer número de beans (Instâncias) da mesma classe

    
por rk2010 16.10.2012 / 17:33
fonte
0

myBean é um singleton do Spring no sentido de cada chamada para beans.getBean ("myBean") sempre retornará a mesma instância. E mySecondBeanhaving um id diferente é outro singleton Spring. Você pode ter diferentes beans singleton da mesma classe no mesmo ApplicationContext.

    
por salsinga 10.08.2015 / 11:50
fonte
-1

Sim, você está certo. Testes que teriam lhe contado.

    
por JB Nizet 16.10.2012 / 17:24
fonte