標籤:autowire pen tostring private keygen auth 產生 UI sel
只要加入spring-boot-starter-data-redis , springboot 會自動識別並使用redis作為緩衝容器,使用方式如下
gradle加入依賴
compile("org.springframework.boot:spring-boot-starter-data-redis:${springBootVersion}")
redis configuration 中啟用緩衝
@Configuration@EnableCachingpublic class RedisConfiguration
redis 自訂key建置規則
@Bean public KeyGenerator wiselyKeyGenerator() { return new KeyGenerator() { @Override public Object generate(Object target, Method method, Object... params) { StringBuilder sb = new StringBuilder(); sb.append(target.getClass().getName()); sb.append(":" + method.getName()); for (Object obj : params) { sb.append(":" + obj.toString()); } return sb.toString(); } }; }
有時候我們需要 使用 redisTemplate, 可以這樣子配置
@Bean public RedisConnectionFactory redisConnectionFactory() { return new JedisConnectionFactory(); } @Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate redisTemplate = new RedisTemplate(); redisTemplate.setConnectionFactory(redisConnectionFactory); return redisTemplate; } @Bean public CacheManager cacheManager(RedisTemplate redisTemplate) { return new RedisCacheManager(redisTemplate); }
完整代碼
package cn.xiaojf.today.data.redis.configuration;import org.springframework.cache.CacheManager;import org.springframework.cache.annotation.EnableCaching;import org.springframework.cache.interceptor.KeyGenerator;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.cache.RedisCacheManager;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import java.lang.reflect.Method;/** * redis 緩衝配置 * @author xiaojf 2016/12/7 10:29. */@Configuration@EnableCachingpublic class RedisConfiguration { @Bean public KeyGenerator wiselyKeyGenerator() { return new KeyGenerator() { @Override public Object generate(Object target, Method method, Object... params) { StringBuilder sb = new StringBuilder(); sb.append(target.getClass().getName()); sb.append(":" + method.getName()); for (Object obj : params) { sb.append(":" + obj.toString()); } return sb.toString(); } }; } @Bean public RedisConnectionFactory redisConnectionFactory() { return new JedisConnectionFactory(); } @Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate redisTemplate = new RedisTemplate(); redisTemplate.setConnectionFactory(redisConnectionFactory); return redisTemplate; } @Bean public CacheManager cacheManager(RedisTemplate redisTemplate) { return new RedisCacheManager(redisTemplate); }}
使用例子
package cn.xiaojf.today.sys.dao.impl;import cn.xiaojf.today.base.dao.impl.BaseDaoImpl;import cn.xiaojf.today.base.model.PageInfo;import cn.xiaojf.today.base.util.Asserts;import cn.xiaojf.today.sys.dao.SysUserDao;import cn.xiaojf.today.sys.repository.SysUserRepository;import cn.xiaojf.today.sys.entity.SysUser;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cache.annotation.CacheConfig;import org.springframework.stereotype.Repository;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;/** * 使用者資料提供者實作類別 * @author xiaojf 2017/2/9 17:40. */@Repository@CacheConfig(cacheNames = {"sysUserCache"})public class SysUserDaoImpl extends BaseDaoImpl<SysUser> implements SysUserDao { @Autowired private SysUserRepository userRepository; public SysUserDaoImpl() { super(SysUserRepository.class); } @Override// @Cacheable(key = "#username") public SysUser getByUsername(String username) { Asserts.notNull(username,"使用者名稱不可為空"); SysUser user = userRepository.findFirstByUsername(username); return user; }}
spring cache的其他使用方式很簡單,可以直接看官網或者百度例子
springboot redis 緩衝對象