给网友朋友们带来一篇相关的编程文章,网友容元冬根据主题投稿了本篇教程内容,涉及到springboot单机缓存ehcache、springboot ehcache、springboot单机缓存ehcache相关内容,已被305网友关注,相关难点技巧可以阅读下方的电子资料。
springboot单机缓存ehcache
区别于redis的分布式缓存,ehcache是纯java进程内的单机缓存,根据不同的场景可选择使用,以下内容主要为springboot整合ehcache以及注意事项
添加pom引用
net.sf.ehcache ehcache 2.10.9.2
启动类添加开启缓存注解:@EnableCaching
添加xml配置,注意,ehcache需要单独的配置文件
这里我定义了一个缓存名字为cache1
修改项目的配置文件application.properties,添加spring缓存类型以及缓存配置文件路径
spring.cache.ehcache.config=classpath:ehcache.xml spring.cache.type=ehcache
上面的步骤做好之后,就可以使用了
给你需要加缓存的方法添加注解
@Configuration public class TestConfig { @Cacheable(value = "cache1",key = "#id") public TestController.Person create(String id) { return new TestController.Person(); } }
这里的value跟xml配置文件里的一致即可
我们调用一下测试看看
@GetMapping("/testCache1") public void testCache1(@Param("id") String id) throws InterruptedException { Person obj1 = testConfig.create(id); Person obj2 = testConfig.create(id); Thread.sleep(3000); Person obj3 = testConfig.create(id); Person obj4 = testConfig.create(id); log.info("test1:"+obj1.toString()); log.info("test2:"+obj2.toString()); log.info("test3:"+obj3.toString()); log.info("test4:"+obj4.toString()); System.out.println(obj1.equals(obj2)); }
执行一下结果看
可以看到,obj1跟obj2是同一个对象,当程序睡眠了三秒之后,再次调用方法,就会重新创建对象,缓存生效
注意事项:
@Cacheable修饰的方法必须是public并且不能是static,原理是因为使用了动态代理,需要重写方法
xml里面的配置要写全,要不然项目启动报错,就是下图这些
xml里面配置的defaultCache没看出有啥用,我也没删了试试
使用缓存的方法不能在@RestController修饰的类中,即不能在controller层,要不然缓存失效,可以在@Service、@Configuratin、@Component等类下面
到此这篇关于springboot整合单机缓存ehcache的实现的文章就介绍到这了,更多相关springboot单机缓存ehcache内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!