tag mvc form example spring thread-safety javabeans

mvc - spring jsp



¿Cómo maneja el frijol la concurrencia? (4)

Como otros ya han sugerido, Spring proporcionará la misma instancia a todos los subprocesos en caso de frijoles "singleton".

Lo que hay que entender es que los hilos hacen todo el trabajo en un sistema ejecutando el código mientras que los objetos proporcionan estado y comportamiento (código). Por lo tanto, es posible que varios subprocesos (solicitudes en su caso), ejecuten simultáneamente los mismos métodos en un bean singleton. Usted puede hacer que los frijoles sean apátridas como lo sugirió Tomasz o hacerlos de otra manera "seguros para la rosca".

Mi aplicación web utiliza Spring IOC. Así que todos mis frijoles de primavera serán singleton (por defecto). En caso de que dos solicitudes intenten acceder a dos métodos diferentes de una sola clase. Por ejemplo: MySpringBean es una clase que tiene dos métodos insertRecord e insertRecord Si en el mismo instante se intenta acceder a ambos métodos a través del mismo bean.

¿Cómo puede estar disponible el mismo bean de primavera para ambos clientes al mismo tiempo o va a ser un problema de concurrencia cuando ambas solicitudes intentarán acceder a dos métodos diferentes pero a través del mismo bean de primavera? y dado que el frijol de primavera es singleton, no se puede crear una nueva instancia. En este caso, ¿cómo va a funcionar esto?


Java singleton y singleton de primavera son diferentes. Spring singleton scope estará disponible dentro de contexto.

Java singleton scope estará en el cargador de clases JVM. Por lo tanto, la solicitud concurrente es posible solo a través de contextos de primavera.



Si el bean es un singleton, Spring le dará la misma instancia en cualquier hilo. Depende de usted hacer que el frijol sea seguro. Ya que es un singleton, sería mejor que esa clase fuera apátrida.