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里面即可...后续还要继续更新...

 

posted @ 2021-01-27 17:02  iJunHello  阅读(105)  评论(0)    收藏  举报