Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo inyecta Spring frijoles en múltiples hilos?

¿Cómo inyecta Spring frijoles en múltiples hilos?

Inyectar Spring Bean en un subproceso Java (multiproceso)

Descripción del problema

Hoy en día, la tecnología Java multiproceso se utiliza en aplicaciones web para procesar algunos servicios al mismo tiempo, pero siempre se informa NullPointerException durante la ejecución. Después de localizar el problema, se descubrió que el Spring Bean en el hilo no se inyectó y el valor del objeto Bean era nulo.

Análisis de causa

Cuando el contenedor web inicia la aplicación, no inyectará beans en el hilo por adelantado (la web es fácil de detectar antes de que se inicie el hilo)

Soluciones

Hay muchos métodos y he visto muchos en Internet.

1. ¿Usar declaración estática de variables

/blog/937877,

o /skyline 520/blog/181158? p={{page}}

Pero recuerda, si defines esta clase de herramienta, ¡también debes configurarla como un bean en primavera!

Publica el código cuando lo use.

(1) Definir categoría de herramienta

La clase pública SpringApplicationContextHolder implementa ApplicationContextAware {

Contexto privado estático de ApplicationContext;

@override

public void setApplicationContext(contexto de contexto de aplicación) lanza BeansException {

springapplicationcontextholder . context = context;

}

Objeto estático público getSpringBean(String beanName) ) {

notEmpty(beanName, "el nombre del bean es obligatorio");

¿Contexto de retorno == nulo? null: context.get bean(nombre del bean);

}

Cadena estática pública[]getbeanditionnames(){

Devuelve context.getbeanditionnames(); /p>

}