Alcance del frijol en primavera

  Al crear una instancia a través de la etiqueta Bean en el contenedor Spring, también puede especificar el alcance del Bean y establecerlo con scope = "".

abarcar Función descriptiva
único El alcance predeterminado en Spring es un modo singleton, y solo habrá una instancia de definición de bean en el contenedor IOC
prototipo En muchos casos, cada vez que se llama al método getBean () para obtener el alcance de la etiqueta del bean como prototipo, se generará una nueva instancia
petición Aplicado en un proyecto web, después de que Spring crea esta clase, se almacenará en el alcance de la solicitud
sesión Aplicado en un proyecto web, después de que Spring crea esta clase, almacena esta clase en el alcance de la sesión
globalsessio Aplicado en un proyecto web, debe utilizarse en un entorno de portlet. Pero si no existe tal entorno, en relación con la sesión

Modo singleton (modo predeterminado):

<bean id="userService" class="com.zy.service.impl.UserServiceImpl" scope="singleton"></bean>

Modo de prototipo (casos múltiples):

<bean id="userService" class="com.zy.service.impl.UserServiceImpl" scope="prototype"></bean>

Usamos el código del artículo anterior para probar estos dos modos:
  bean.xml se configura como un modo singleton al configurar la etiqueta del bean:

<bean id="userService" class="com.zy.service.impl.UserServiceImpl" scope="singleton"></bean>

  Ejecute el código de prueba:

public class TestDemo01 {
    
    
    public static void main(String[] args) {
    
    
        //加载配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        //根据bean标签的id获取实例对象
        UserService userService1 = (UserService) context.getBean("userService");
        UserService userService2 = (UserService) context.getBean("userService");
        //调用方法
        userService1.saveUser();
        System.out.println(userService1);
        System.out.println(userService2);
        System.out.println(userService1 == userService2);
    }
}

Resultado de la operación:
Inserte la descripción de la imagen aquí
  se puede ver que la dirección del objeto es la misma cuando se imprime dos veces.
 Al configurar etiquetas de bean en bean.xml, configúrelas como modo prototipo:

<bean id="userService" class="com.zy.service.impl.UserServiceImpl" scope="prototype"></bean>

Continúe ejecutando el código de prueba anterior, los resultados son los siguientes: Se
Inserte la descripción de la imagen aquí
puede ver que las direcciones de los dos objetos impresos no son las mismas.

Supongo que te gusta

Origin blog.csdn.net/qq_42494654/article/details/111013651
Recomendado
Clasificación