spring boot 2.0 mybatis redid
----------------------------------pom.xml---------------------------------------
<!--快取-->
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>net.sf.ehcache</groupId>
----------------------------------application.properties---------------------------------------
#redis #database index
spring.redis.database=0 #server host spring.redis.host=127.0.0.1 #server password spring.redis.password=#connection port spring.redis.port=6379 # 連線池最大連線數(使用負值表示沒有限制) spring.redis.jedis.pool.max-active=1000 # 連線池最大阻塞時間(使用負值表示沒有限制) spring.redis.jedis.pool.max-wait=-1 # 連線池中的最大空閒連線
----------------------------------regid配置---------------------------------------
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.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericToStringSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import java.lang.reflect.Method;
/**
*
* redis配置
* @author SYH on 2018/3/30.
* version : v1.0
*
*/
@Configuration
@EnableCaching//啟用快取;
public class RedisConfiguration extends CachingConfigurerSupport {
/**
* 自定義key.
* 此方法將會根據類名+方法名+所有引數的值生成唯一的一個key,即使@Cacheable中的value屬性一樣,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();
}
};
}
/**
* spring boot 2.0 快取管理
*/
@Bean
public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
return RedisCacheManager.create(connectionFactory);
}
/**
* RedisTemplate快取操作類,類似於jdbcTemplate的一個類;
* <p>
* 雖然CacheManager也能獲取到Cache物件,但是操作起來沒有那麼靈活;
* <p>
* 這裡在擴充套件下:RedisTemplate這個類不見得很好操作,我們可以在進行擴充套件一個我們
* <p>
* 自己的快取類,比如:RedisStorage類;
*
* @param factory : 通過Spring進行注入,引數在application.properties進行配置;
* @return
*/
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
redisTemplate.setConnectionFactory(factory);
//key序列化方式;(不然會出現亂碼;),但是如果方法上有Long等非String型別的話,會報型別轉換錯誤;
//所以在沒有自己定義key生成策略的時候,以下這個程式碼建議不要這麼寫,可以不配置或者自己實現ObjectRedisSerializer
//或者JdkSerializationRedisSerializer序列化方式;
//Long型別不可以會出現異常資訊;
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(redisSerializer);
redisTemplate.setHashKeySerializer(redisSerializer);
redisTemplate.setValueSerializer(new GenericToStringSerializer<Long>(Long.class));
return redisTemplate;
}
}
----------------------------------end---------------------------------------