社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
当然,这个依赖,我们在前面的框架搭建中已经引入,点击打开链接<!-- 启用缓存注解功能,这个是必须的,否则注解不会生效,另外,该注解一定要声明在spring主配置文件中才会生效 -->
<cache:annotation-driven cache-manager="scacheManager"/>
<!--为了区别shiro中引用的id="cacheManager"-->
<bean id="scacheManager" class="org.springframework.cache.support.SimpleCacheManager">
<property name="caches">
<set>
<!--这边我们使用的是spring默认的缓存bean,我们也可以根据实际情况进行自定义-->
<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="default"/>
<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="skyCache"/>
</set>
</property>
</bean>
这里先展示一个完全自定义的缓存实现,即不用任何第三方的组件来实现某种对象的内存缓存。 @Override
//value是必选项,定义了使用的缓存集合,key如果不定义时默认为方法的参数.key采用的是SpEL表达式
@Cacheable(value = "skyCache", key = "#username")
public User findOneByUsername(String username) {
Query query = new Query();
Criteria criteria = Criteria.where("username").is(username);
query.addCriteria(criteria);
return this.mongoTemplate.findOne(query, User.class);
}
缓存注解有以下三个: @Autowired
private CacheManager scacheManager;
@Test
public void findOneByUsername() {
logger.info("-------default:-------" + scacheManager.getCache("default"));
logger.info("-------skyCache:-------" + scacheManager.getCache("skyCache"));
User use = userDao.findOneByUsername("skyLine");
logger.info("-------default:-------" + scacheManager.getCache("default"));
logger.info("-------skyCache:-------" + scacheManager.getCache("skyCache"));
}
结果如下:如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!