¿Qué significa singleton="false" en spring .xml? ¿Qué hace?
Por ejemplo, al configurar un bean
1 ¿Cómo determinar si un bean está configurado como singleton o como prototipo?
2 Cuando se usa en combinación con jsf, ¿cómo se refleja el rango efectivo del bean administrado jsf original en la configuración de resorte?
Establecer bean
El valor predeterminado de este atributo es verdadero, lo que equivale a
Si no desea un singleton, establezca singleton="false"
<bean id="xx" class="yy" singleton="false"/>
Cuándo configurar singleton=false y cuándo configurar singleton=true, es necesario analizar el situación
Cuándo establecer singleton=false y cuándo establecer singleton=true.
En términos generales, para clases inmutables, debes establecer singleton=true, que es el valor predeterminado.
Para clases mutables, no existen principios absolutos y es necesario analizar los aspectos específicos. situación
1 Si se pregunta cómo configurar una única instancia de una clase en un archivo de configuración. Si desea saber cómo configurar una única instancia en el archivo de configuración, ustbzhangwei (wei) lo dejó muy claro. Si pregunta cuándo debe usar un singleton, no hay una respuesta final, depende de sus necesidades comerciales. En términos generales, las clases (DAO) sin variables globales deben definirse como singleton. Si hay variables globales, si sus valores no son variables o son necesidades comerciales, deben configurarse como singleton. También hay casos de variables globales. Configuradas como singleton, las clases inmutables también deben configurarse como singleton.
ustbzhangwei (wei):
"Cuándo establecer singleton=false y cuándo establecer singleton=true deben analizarse en función de la situación real
" Cuándo configurar singleton = false Cuándo configurar singleton = true, debe analizarse en función de la situación real
En términos generales, para clases inmutables, es decir, clases inmutables, debe configurarse en singleton = verdadero, que es el valor predeterminado
No existe un principio absoluto para las clases de variables y debe analizarse en función de la situación real."
2 No es necesario Preocúpese por esto. Para Spring, si es un singleton, se devolverá lo mismo cada vez que se obtenga el Bean; de lo contrario, cada get devolverá un Bean recién creado. Para jsf, decidirá cuándo llamar al get de Spring. Método basado en el alcance del bean.
Para objetos mutables, creo que me gustaría agregar mis propias opiniones superficiales y agradecería sus críticas y correcciones.
Para facilitar la descripción. , primero suponga que el objeto a está a punto de discutirse como un objeto variable
Suponga que los objetos a los que hace referencia el objeto a son byc, d,...
1) El objeto a solo es referenciado por un objeto b durante su ciclo de vida, por lo que singleton=true (por supuesto, también puede ser = false, pero = true es más preciso)
2) El objeto a es referenciado por múltiples objetos b, c, d... durante su ciclo de vida.
Si el programa quiere que b, c, d...*** disfrute del objeto a (es decir, en cualquier momento, b, c, d... puede ver el mismo estado del objeto a), entonces simplemente Ejemplo = verdadero
3) El objeto a es referenciado por múltiples objetos b, c, d... durante su ciclo de vida. Si el programa quiere que b, c, d... no tenga acceso al objeto a (es decir, el objeto b modifica el estado del objeto a al que se hace referencia, y el objeto c al que hace referencia el objeto a no se puede modificar, es decir, el objeto b se refiere a a! = a es referenciado por c), luego haga singleton=false