yangyoupeng

cache的bean配置类

package com.zhaoonline.redis.cache;
public class CacheConfig {
private String cacheName;
private String prefix;
public String getCacheName() {
return cacheName;
}
public void setCacheName(String cacheName) {
this.cacheName = cacheName;
}
public String getPrefix() {
return prefix;
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
}
......@@ -32,12 +32,10 @@ public class CacheOnRedis {
* @param cacheName
* @param prefix <BR>
*/
@Autowired
public CacheOnRedis(RedisTemplateFactory factory,String cacheName,byte[] prefix){
redisTemplate = factory.createTemplate();
cache= new RedisCache(cacheName, prefix, redisTemplate, TimeUnit.MINUTES.toSeconds(10));
}
@Autowired
public CacheOnRedis(RedisTemplateFactory factory,String cacheName,byte[] prefix,long exipreTime){
redisTemplate = factory.createTemplate();
cache= new RedisCache(cacheName, prefix, redisTemplate,exipreTime);
......
package com.zhaoonline.redis.cache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ObjectUtils;
import com.zhaoonline.redis.template.RedisTemplateFactory;
@Configuration
public class CacheOnRedisBeanConfig {
@Bean
@ConfigurationProperties("alpaca.components.alpaca-aliyun-redisCache")
public CacheConfig cacheConfig(){
return new CacheConfig();
}
@Bean
public CacheOnRedis cacheOnRedis(RedisTemplateFactory factory,CacheConfig cacheConfig){
CacheOnRedis cache =null;
if(ObjectUtils.isEmpty(cacheConfig.getCacheName())){
return null;
}
if(!ObjectUtils.isEmpty(cacheConfig.getPrefix())){
cache =new CacheOnRedis(factory, cacheConfig.getCacheName(), cacheConfig.getPrefix().getBytes());
}else{
cache =new CacheOnRedis(factory, cacheConfig.getCacheName(),null);
}
return cache;
}
}
......@@ -6,6 +6,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.util.ObjectUtils;
import com.zhaoonline.redis.template.RedisTemplateFactory;
......@@ -13,17 +14,20 @@ import com.zhaoonline.redis.template.RedisTemplateFactory;
public class ClientConfig {
@Bean
@ConfigurationProperties("alpaca.components.redis")
@ConfigurationProperties("alpaca.components.alpaca-aliyun-redis")
public Config config(){
return new Config();
}
@Bean
@Autowired
public JedisConnectionFactory jedisConnectionFactory(Config config){
JedisConnectionFactory factory = new JedisConnectionFactory();
factory.setHostName(config.getHost());
factory.setPort(config.getPort());
if(!ObjectUtils.isEmpty(config.getPassword())){
factory.setPassword(config.getPassword());
}
factory.setDatabase(config.getDatabase());
factory.setUsePool(true);
factory.afterPropertiesSet();
return factory;
......
......@@ -16,10 +16,11 @@ import org.springframework.stereotype.Component;
*/
@Component
@EnableAutoConfiguration
//@ConfigurationProperties("alpaca.components.redis")
public class Config {
private String host;
private int port;
private String host;
private int port;
private String password;
private int database;
public Config(){
}
......@@ -40,4 +41,22 @@ public class Config {
this.port = port;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getDatabase() {
return database;
}
public void setDatabase(int database) {
this.database = database;
}
}
......
......@@ -12,7 +12,7 @@ import org.springframework.context.annotation.ComponentScan;
import com.zhaoonline.alpaca.config.bootstrap.AlpacaApplication;
@SpringBootApplication
@ComponentScan(basePackages="com.zhaoonline.redis.config")
@ComponentScan(basePackages={"com.zhaoonline.redis.config","com.zhaoonline.redis.cache"})
public class Application {
@Bean
public CountDownLatch closeLatch() {
......