pom.xml文件中加入依赖关系:
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.6.0.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.3</version> </dependency>
在项目中集成基础配置
import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.interceptor.KeyGenerator; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; 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.util.ResourceBundle; /** * <p> * spring cache和redis的结合配置类 * </p> * * @author wangguangdong * @version 1.0 * @Date 16/2/25 * @see RedisCacheManager * @see JedisConnectionFactory * @see RedisTemplate * @see KeyGenerator */ @Configuration @EnableCaching @ComponentScan("com.kingdowin.xiugr.server") @PropertySource("classpath:/redis.properties") public class RedisCacheConfig extends CachingConfigurerSupport { private static final ResourceBundle bundle = ResourceBundle.getBundle("redis"); private String redisHost = bundle.getString("redis.ip"); private int redisPort = Integer.valueOf(bundle.getString("redis.port")); private String redisPassword = bundle.getString("redis.auth"); private int expireTime = Integer.valueOf(bundle.getString("redis.cache.expireTime")); @Bean public JedisConnectionFactory redisConnectionFactory() { JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(); // Defaults redisConnectionFactory.setHostName(redisHost); redisConnectionFactory.setPort(redisPort); redisConnectionFactory.setPassword(redisPassword); return redisConnectionFactory; } @Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) { RedisTemplate<String, String> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(cf); return redisTemplate; } /** * 缓存管理器 * @param redisTemplate * @return */ @Bean public CacheManager cacheManager(RedisTemplate redisTemplate) { RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate); // Number of seconds before expiration. Defaults to unlimited (0) cacheManager.setDefaultExpiration(expireTime);// Sets the default expire time (in seconds) return cacheManager; } /** * @description 自定义的缓存key的生成策略</br> * 若想使用这个key</br> * 只需要讲注解上keyGenerator的值设置为customKeyGenerator即可</br> * @return 自定义策略生成的key */ @Bean public KeyGenerator customKeyGenerator() { return (o, method, objects) -> { StringBuilder sb = new StringBuilder(); sb.append(o.getClass().getName()); sb.append(method.getName()); for (Object obj : objects) { sb.append(obj.toString()); } return sb.toString(); }; } }
配置注解
如果你的项目已经开启了注解的支持,并且已经扫描了配置所在的包,可以略过该步骤
否则请在你的spring配置文件中填写该代码,用以支持spring注解的扫描
<context:component-scan base-package="com.xx.xx.xx" />