redis整合springboot项目
1、redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、redis序列化配置类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* redis配置类
* @author ZENG.XIAO.YAN
* @date 2018年6月6日
*
*/
@Configuration
public class RedisConfig {
@Bean
@SuppressWarnings("all")
public RedisTemplate<String, Object> redisTemplates(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;
}
}
3、springboot整合redis Controller
import com.example.vuetext01.library.entity.Userregister;
import com.example.vuetext01.library.service.UserregisterService;
import com.example.vuetext01.library.utils.JWTUtils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* <p>
* 前端控制器
* </p>
*
* @author IJun
* @since 2021-01-26
*/
@Controller
public class UserregisterController {
@Autowired
private UserregisterService userregisterService;
// @CrossOrigin
@PostMapping("/toregister")
@ResponseBody
public Object register(@Validated @RequestBody Userregister userregister){
System.out.println(userregister);
userregisterService.save(userregister);
System.out.println("提交成功!");
return null;
}
@Autowired
@Qualifier("redisTemplates")
private RedisTemplate redisTemplate;
@PostMapping("/login")
@ResponseBody
@CrossOrigin
public Object toLogin(@Validated @RequestBody Userregister userregister) throws JsonProcessingException {
Map<String,String> map=new HashMap<>();
//判断用户是否登录
System.out.println("进入login...");
Map<String,String> map1=new HashMap<>();
try {
Userregister userregister1 = (Userregister) userregisterService.userLogin(userregister);
map.put("username",userregister1.getUsername());
map.put("password",userregister1.getPassword());
String token= JWTUtils.getToken(map);
System.out.println("----------------------------------1----------");
//将用户信息存入redis
map1.put("CODE","201");
map1.put("MSG","认证成功");
map1.put("token",token);
} catch (Exception e) {
redisTemplate.opsForValue().set("CODE","505");
redisTemplate.opsForValue().set("MSG","认证失败");
map1.put("CODE","505");
map1.put("MSG","认证失败");
}
String s = new ObjectMapper().writeValueAsString(map1);
redisTemplate.opsForValue().set("user",map1);
return redisTemplate.opsForValue().get("user");
}
}
5、备注: @Qualifier 精准定位,只需要返回值放到redis里面即可...后续还要继续更新...

浙公网安备 33010602011771号