¿Cómo inyecta Spring frijoles en múltiples hilos?
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>
}