1. 程式人生 > >spring boot 2.0 mybatis redid

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>

<artifactId>ehcache</artifactId> </dependency> <!--redis資料庫--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>

----------------------------------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 # 連線池中的最大空閒連線

spring.redis.jedis.pool.max-idle=10 # 連線池中的最小空閒連線 spring.redis.jedis.pool.min-idle=2 # 連線超時時間 spring.redis.timeout=5000

----------------------------------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---------------------------------------