springboot 集成 spring cache
你使用什么缓存管理器呢?redis?配置文件中找找看是采用的什么缓存,如果是在redis上或者其他中间件缓存中,那重启项目就不会丢失
你没有引入 EhCache 或者redis之类的么?
springboot集成redis,配置redis为默认缓存器
由于数据存储在内存中,重启程序后数据仍然存在的原因是Spring Cache的工作原理。Spring Cache使用缓存注解来标注需要进行缓存的方法,在方法执行时,会先检查缓存中是否存在相应的数据。如果存在,则直接从缓存中获取数据并返回;如果不存在,则执行方法,并将方法返回的数据存入缓存中供下次使用。
具体的解决方案如下:
使用Spring Boot创建一个Spring Boot项目,并引入Spring Cache相关的依赖(如spring-boot-starter-cache)。
定义一个缓存配置类,使用@EnableCaching注解启用缓存功能,并使用@Configuration注解将类声明为一个配置类。在配置类中,可以使用@CacheConfig注解来统一配置缓存的公共属性(如缓存的名称、缓存的过期时间等)。
@Configuration
@EnableCaching
public class CacheConfig {
// 可以在这里配置缓存的公共属性
}
@Cacheable("users") // 缓存名称为"users"
public User findById(Integer id) {
System.out.println("find user by id: " + id);
User user = new User();
user.setId(id);
user.setName("Name" + id);
return user;
}
@SpringBootApplication
@EnableCaching
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
运行应用程序,并调用需要进行缓存的方法。第一次调用方法时,会执行方法体,并将方法返回的数据存入缓存中。第二次及以后调用方法时,会直接从缓存中获取数据并返回。
在重启程序后,仍然可以从缓存中获取之前存入的数据,因为数据仍然存在于内存中。
需要注意的是,Spring Cache并没有提供数据持久化的功能,只是将数据缓存在内存中。如果需要在重启程序时仍然保持数据的完整性,可以考虑使用其他数据持久化的方式,如数据库存储或文件存储。
可以看一下默认的缓存依赖是什么
spring boot项目有个特点,就是在你引入依赖后,会使用默认配置。如果你的项目里引入了redis或EhCache依赖,那么就会使用默认配置。不管使用哪个框架,内容都会持久化到磁盘中,只是持久化的时机不同 。