标签:mes active 自身 示例 LEDE factor autowire exception ons
使用redis之前,首先要安装redis服务,确保服务正常启动,redis-cli客户端能连接上。springboot集成redis上手快,简单几步就可以搞定。
首先,引入springboot集成redis的依赖:
springboot集成redis依赖坐标:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
其次,在项目的配置文件中配置redis:
redis:
host: IP地址
port: 6379
timeout: 60s
database: 1
pool:
max-active: 100
max-idle: 10
max-wait: 100000
此处配置根据自身实际情况配置,在安装redis如果不是使用默认配置,可根据自己修改的内容进行配置。在springboot项目中使用RedisTemplate就可使用。
@Autowired
private RedisTemplate redisTemplate;
但是这个调用的是redis自带的RedisTemplate,redistemplate默认key-value都是object类型,使用时都需要序列化使用,然而我们在开发过程中使用的多是key:String、value:object的类型,所以我们可以自己写个配置类,自定义RedisTemplate模板:
@Configuration
public class RedisConfig {
@SuppressWarnings("all")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
// 我们为了自己开发方便,一般直接使用 <String, Object>
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(factory);
// Json序列化配置
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
// String 的序列化
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// key采用String的序列化方式
template.setKeySerializer(stringRedisSerializer);
// hash的key也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
// value序列化方式采用jackson
template.setValueSerializer(jackson2JsonRedisSerializer);
// hash的value序列化方式采用jackson
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
为了更加方便,我们还可以自己写个Redis工具类:
@Slf4j
@Component
public class RedisUtil {
@Autowired
private RedisTemplate redisTemplate;
/**
* SET操作
*
* @param key KEY
* @param value VALUE
* @return 是否成功
*/
public boolean set(String key, String value) {
try {
redisTemplate.opsForValue().set(key, value);
return true;
} catch (Exception e) {
log.error("redis set操作异常:" + e.getMessage());
return false;
}
}
/**
* GET操作
*
* @param key KEY
* @return VALUE
*/
public String get(String key) {
try {
String value = redisTemplate.opsForValue().get(key);
return value;
} catch (Exception e) {
log.error("redis get操作异常:" + e.getMessage());
return null;
}
}
}
使用示例:
@Slf4j
@Service
public class getTokenServiceImpl implements GetTokenService {
@Autowired
private RedisUtil redis;
@Value("${xzqdm}")
private String xzqdm;
@Value("${ausername}")
private String ausername;
@Value("${password}")
private String password;
@Value("${url.getToken}")
private String urlGetToken;
@Override
public ResTokenMes getToken() throws IOException {
HttpClientUtil https= new HttpClientUtil();
GetHeadMes headMes = new GetHeadMes();
........................此处省略若干代码
String result = https.sendHttpClient(url, tokenmap);
ResTokenMes resTokenMes = JSONUtil.toBean(JSONUtil.toJsonStr(result), ResTokenMes.class);
String token = resTokenMes.getData().getToken();
redis.set("token", token);
return resTokenMes;
}
}
@Slf4j
@Service
public class PushServiceImpl implements PushService {
@Autowired
private RedisUtil redis;
@Autowired
InfoMapper infoMapper;
@Autowired
@Qualifier("batchKafkaTemplate")
private KafkaTemplate<Object, Object> batchKafkaTemplate;
@Value("${kafka.topic.batch}")
private String topic;
@Value("${xzqdm}")
private String xzqdm;
@Value("${url.postXF}")
private String urlPostXF;
@Value("${url.postFK}")
private String urlPostFK;
@Override
public R getApply() {
//获取token
String token = redis.get("token");
....................此处省略若干代码
}
}
标签:mes active 自身 示例 LEDE factor autowire exception ons
原文地址:https://www.cnblogs.com/zhuifenglang/p/13161919.html