Red de conocimiento informático - Problemas con los teléfonos móviles - Por qué Spring es seguro para subprocesos

Por qué Spring es seguro para subprocesos

Las clases o componentes en el framework Spring obtienen instancias en modo singleton de forma predeterminada.

El patrón singleton significa que solo hay una instancia. El patrón singleton garantiza que solo haya una instancia de una clase particular y que esa clase se instancia a sí misma y hace que esa instancia esté disponible para todo el sistema. Esta clase se llama clase singleton.

Cuando varios usuarios solicitan un servicio al mismo tiempo, el contenedor asignará un subproceso para cada solicitud y varios subprocesos ejecutarán simultáneamente la lógica empresarial (métodos miembro) correspondiente a la solicitud.

público?clase?PersonController{

privado?PersonService?personService;

público?void?setFirstName( HttpServletRequest?request){

personService.setFirstName(request.getParameter("firstname"));

}

public?String?getFirstName(){?

returnpersonService.getFirstName( );

}

}

Cuando dos subprocesos acceden a PersonController, un subproceso llama primero a setFristName para establecer el nombre y el otro subproceso llama a getFirstName para establecer el nombre Obtiene el valor establecido por el primer hilo. Esto se debe a que PersonController es un singleton de forma predeterminada y personService también es un singleton inyectado en personController. En este caso, el subproceso múltiple no es seguro a menos que se pueda garantizar que cada método no cambiará las propiedades o el estado del objeto que está disfrutando.

Método seguro para subprocesos public?class?PersonController?{

private?PersonService?personService

public?void?setFirstName( HttpServletRequest?request){Person? savePerson(person);

} }

El ejemplo anterior es una forma de escritura segura para subprocesos. Por ejemplo, el subproceso A accede al método setFirstName cuando person.setFirstName(). ejecutado, El sistema decide suspender este hilo y pasar al hilo de ejecución B, que realiza la misma operación y guarda. Luego, el sistema ejecuta el hilo suspendido A. Dado que el subproceso A tiene su propio estado de pila, no tiene su propia instancia o estado de objeto y no puede interactuar con otros subprocesos. Cabe agregar que se supone que el método personService.savePerson() es seguro para subprocesos. De lo contrario, es necesario estudiar si personService.savePerson() es seguro para subprocesos.

Entonces, en la mayoría de los casos, si no le dice a Spring Bean cómo administrar la seguridad de subprocesos de un objeto o método, entonces Spring Bean no es seguro para subprocesos, o puede que lo sea. .

Por lo tanto, Spring Bean proporciona las siguientes anotaciones disponibles para la seguridad de subprocesos, y usted puede definir sus clases o métodos individualmente según sus necesidades.