@Cacheable causas de fallo y soluciones al integrar caché shiro

problema

Cuando se integra shiro caché, encontramos la capa de servicio marcada con el método anotado caché no llama al método de caché

Pero cada llamada a métodos directamente entidad, lo que resulta en un fracaso de la función de caché

 

razón

público  de clase UserRealm extiende AuthorizingRealm { 

    @Autowired 
    privada UserService UserService;

primavera al registrarse frijol, en primer lugar se encuentran otras frijol y haba se basó en el registro

Así que en el caso anterior, el registro también UserRealm la capa de clase de implementación UserService servicio también registrado

Pero este no es el quid de la cuestión

La clave es darse cuenta de caché anotaciones @Cacheable en el método

Caché exploraciones componentes a este comentario, crear un objeto proxy a través de los mecanismos correspondientes, AOP puede realizar de forma natural las operaciones de almacenamiento en caché

El problema es que shiro en el proceso rigisterBeanPostprocessors etapa de creación de contenedores registra los componentes relacionados

El UserRealm anterior se ha registrado en los rigisterBeanPostprocessors, haciendo clase de implementación UserService se inyecta automáticamente creados de antemano

La memoria caché se únicos componentes relevantes para ser registrado después de método en finisBeanfactoryInitialization

Así caché @Cacheable y otras anotaciones creado antes de la clase de implementación de servicio es inferior a la exploración

 

soluciones

Derivado del análisis anterior, el servicio necesita ser creado después de un registro de componentes caché

Así que dar a la propiedad de servicio más un comentario @Lazy

Utilice la carga diferida, y reino al mismo tiempo para evitar la inscripción, reinscripción cuando se usa

A continuación, almacenar en caché los componentes naturales que se han creado, como el caché puede identificar correctamente comentario @Cacheable

Supongo que te gusta

Origin www.cnblogs.com/Unicron/p/12578842.html
Recomendado
Clasificación