[SpringBoot] Comentarios relacionados con la memoria caché

1. @EnableCaching: se utiliza principalmente para habilitar el soporte de almacenamiento en caché basado en anotaciones, utilizado en la clase de aplicación

@EnableCaching //SpringBoot开启缓存注解支持
@SpringBootApplication
public class DemoApplication {
    
    

    public static void main(String[] args) {
    
    
        ConfigurableApplicationContext app = SpringApplication.run(DemoApplication.class, args);
}

2. @CacheConfig: esta anotación se agrega a la clase para extraer la configuración pública del caché.

Agregar la anotación @CacheConfig al encabezado de clase es equivalente a agregar el componente especificado por cacherName o valor a la anotación de caché en cada método , y este componente proviene de @CacheConfig, que se usa para coordinar todas las clases de administración que usan @Cacheable y @ CachePut ... y las propiedades públicas en el método de anotación de anotación @CacheEvict , estas propiedades públicas incluyen cacheNames, keyGenerator, cacheManager y cacheResolver

  @CaaheConfig.(caaheNames - "comment")service
        public class CommsntService {
    
    
            @Autowired
            private CommentRepository commentRepository;
            public Comment findById(int comment. id){
    
    
            Comment comment = commentRepository.findById(commenc..id).get ();
            return comment; 
        }
    }

En el código anterior, la anotación @CacheConfig está marcada en la clase CommentService y el atributo cacheNames se usa para establecer el espacio de caché para comentar, de modo que el atributo cacheNames correspondiente se puede omitir cuando se usan anotaciones de caché en todos los métodos de esta clase. .
Cabe señalar que si se utiliza @CacheConfig en la clase, la anotación define una determinada propiedad (como cacheNames) y, al mismo tiempo, la misma propiedad se define en el método de clase mediante la anotación de caché, luego el valor de la propiedad utilizará el "principio de proximidad" La selección está sujeta al valor del atributo en la anotación en el método.

3. @CachePut: esta anotación se usa para configurar el caché

Indica que la memoria caché se actualiza mientras se llama al método. Primero llama al método de destino de forma predeterminada y luego almacena el resultado de la ejecución del método de destino en la memoria caché. Sin embargo, debe tenerse en cuenta que si desea mantener la memoria caché actualizada sincrónicamente , la clave utilizada en esta anotación debe ser la misma que la caché. La clave sigue siendo la misma.
La diferencia con @cacheable es que @cacheable se ejecuta antes que el método de destino, pero después del método de destino, porque primero necesita obtener el resultado del método de destino. @Cacheable no puede usar #result, porque es posible que no se llame al método marcado con @Cacheable y que no se obtenga el resultado. Sus atributos son básicamente los mismos que @cacheable, excepto por un atributo de si es asíncrono (sincronización)

@CachePut(value="dep",key="#department.id")
    public Department updateDepartment(Department department){
    
    
       System.out.println("更新信息:"+department);
       departmentDao.updateDepartment(department);
       return department;
    }

4. @Cacheable(value=”accountCache"): esta anotación es principalmente para la configuración del método, que puede almacenar en caché los resultados de acuerdo con los parámetros de solicitud del método. Por ejemplo, si el valor existe en el caché, los datos almacenados en caché serán usado Si no está en el caché, entonces almacenado en el caché;

Este comentario significa que cuando se llame a este método, se consultará desde un caché llamado accountCache. De lo contrario, se ejecutará el método real (es decir, consultar la base de datos) y el resultado de la ejecución se almacenará en el caché; de lo contrario serán objetos devueltos en el caché . La clave en el caché aquí es el nombre de usuario del parámetro, y el valor es el objeto Cuenta. El caché "accountCache" es el nombre definido en spring*.xml.
Atributos:

  1. value/cacheNames: especifique el nombre del espacio de caché y haga coincidir los atributos. Puedes elegir uno de los dos.
  2. clave: Especifica la clave de los datos en la caché.El valor del parámetro del método se usa por defecto, y también se pueden usar expresiones SPEL.
  3. keyGenerator: especifica el generador de la clave de los datos almacenados en caché, que se puede utilizar con el atributo clave.
  4. cacheManager: especifica el administrador de caché
  5. cacheResolver: especifica la resolución de caché, que se puede usar con el atributo cacheManager.
  6. condición: especifica que el almacenamiento en caché de datos se debe realizar cuando se cumple una determinada condición.
  7. a menos que: especifica que no se almacenen en caché los datos cuando se cumpla una determinada condición.
  8. sincronización: especifica si se debe utilizar el almacenamiento en caché asíncrono; el valor predeterminado es falso.

5. @CacheEvict: esta anotación se usa para limpiar el caché

Comente para marcar el método para borrar el caché, primero realice la llamada al método y luego borre el caché.
Preste atención a uno de @CacheEvict(value=”accountCache”, key=”#account.getName()”), la clave en la que se usa para especificar la clave del caché, porque usamos el campo de nombre del objeto de cuenta al guardar, por lo que también es necesario obtener el valor de nombre del objeto de cuenta de parámetro como clave. El # delante significa que se trata de una expresión SpEL, y esta expresión puede atravesar el objeto de parámetro del método.
Esta anotación proporciona dos atributos especiales:
Atributo allEntries: indica si se deben borrar todos los pares clave-valor en el caché especificado, es decir, si se deben borrar todos los cachés. Cuando se establece en verdadero, se borrarán todos los pares clave-valor en el caché. El valor predeterminado es falso, es decir, según la clave para borrar el caché. Por lo tanto, se usa con el atributo clave.
Atributo beforeInvocation: indica si se debe borrar la memoria caché especificada antes de la llamada al método anotado por @CacheEvict. El valor predeterminado es falso, es decir, la memoria caché se borra después de la llamada al método. Cuando se establece en verdadero, la memoria caché se borrará antes de la llamada al método. . La diferencia entre borrar la memoria caché antes o después de la llamada al método es si habrá una excepción cuando se llame al método. Si no hay excepción, no hay diferencia entre las dos configuraciones. Si ocurre una excepción, configurarla para borrar la caché después de la llamada al método no funcionará, porque el método La llamada falló.

@CacheEvict(value = "dep",key = "#id"/*,beforeInvocation = true*//*,allEntries = true*/)
    public boolean delDep(int id){
    
    
        boolean flag=false;
        try{
    
    
            departmentDao.deleteDepartmentById(id);
            flag=true;
        }catch(Exception e){
    
    
            e.printStackTrace();
        }
        return flag;
}

6. @Caching: esta anotación puede empaquetar limpieza, configuración y otras operaciones de caché

Se utiliza para la gestión de caché de datos para reglas complejas, que se pueden aplicar a clases o métodos.La anotación @Caching contiene tres atributos: Cacheable, put y evict, correspondientes a las tres anotaciones de @Cacheable, @CachePut y @CacheEvict respectivamente

@Caching(cacheable={
    
    8cacheable (gacheNames ="comment".,key = "帮id")},
put = {
    
    RCachePut(cacheNames = "comment".,key.= "#result.author")})
public Comment getcoiment(int comment id){
    
    
    return commentRepository.fi.ndByld(comment id).get(); 
}

En el código anterior, las dos anotaciones @Cacheable y @CachePut están anidadas usando los atributos de almacenamiento en caché y de colocación. El id y el autor se usan respectivamente como valor de clave de caché, y el comentario del resultado de la consulta se usa como valor de caché para la administración de caché.

Supongo que te gusta

Origin blog.csdn.net/m0_46459413/article/details/129934944
Recomendado
Clasificación