Si la instancia de bean creada en Spring es una sola instancia o varias instancias

En Spring, los beans son objetos de instancia única por defecto

public class Student {
    
    
}
    <bean id="student" class="iocbean.byxml.example.Student">

    </bean>
public class DemoTest {
    
    
    @Test
    public void test1(){
    
    
        ApplicationContext context = new ClassPathXmlApplicationContext("iocbean/byxml/example/bean.xml");

        Student student1 = context.getBean("student", Student.class);
        Student student2 = context.getBean("student", Student.class);

        System.out.println(student1);
        System.out.println(student2);
    }
}

Resultado: (puede ver que los valores de dirección de los dos objetos son los mismos)

iocbean.byxml.example.Student@5bd03f44
iocbean.byxml.example.Student@5bd03f44

Process finished with exit code 0

Hay atributos (alcance) en la etiqueta de bean del archivo de configuración de primavera para establecer una instancia única o varias instancias

  • El valor predeterminado, singleton, significa un objeto de instancia única
  • prototipo, lo que significa que es un objeto de instancias múltiples
    <bean id="student" class="iocbean.byxml.example.Student" scope="prototype">

    </bean>

Resultado: (puede ver que los valores de dirección de los dos objetos no son los mismos)

iocbean.byxml.example.Student@470f1802
iocbean.byxml.example.Student@63021689

Process finished with exit code 0

La diferencia entre la creación de objetos de instancia singleton y prototype:

  • Cuando el valor del alcance se establece en singleton, se creará un objeto de instancia única cuando se cargue el archivo de configuración de primavera
  • Al establecer el valor del alcance en prototipo, en lugar de crear un objeto al cargar el archivo de configuración de Spring, cree un objeto de instancias múltiples al llamar al método getBean

Supongo que te gusta

Origin blog.csdn.net/MrYushiwen/article/details/110876111
Recomendado
Clasificación