springboot集成redis

本文详细介绍了如何在SpringBoot项目中集成Redis,包括配置步骤、遇到的问题及解决方案。从创建pom.xml文件引入依赖,到编写springboot启动类、application.yml配置文件,再到创建通用mapper、控制器、服务层和服务实现,最后展示了成功将userList对象以JDK序列化方式存储到Redis中的测试效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot集成redis

a.步骤:

1.创建prom文件,进行依赖注入
2.创建springboot启动类进行启动
3.创建application.yml文件
4.创建通用mapper基类TkMapper
5.控制器Controller的编写
6.服务层Service的搭建
7.持久层mapper的构建
8.测试效果图

b.出现的问题以及解决方案

   报错以及解决方案:
    	1.   org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.context
    	
    	解决方案:
    	springboot的启动类命名错误,不能起名为关键字SpringbootApplication为启动类名
    	
    	2.   [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.data.redis.serializer.SerializationException: Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.io.NotSerializableException: com.guigu.liujie.pojo.User] with root cause
    
    	解决方案:
    	给User实体类进行实现序列化Serializable

项目目录:
在这里插入图片描述

  1. 创建prom文件,进行依赖注入
  <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.guigu</groupId>
        <artifactId>demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.5.0</version>
        </parent>
    
        <dependencies>
            <!--mysql驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
    
            <!--springboot的mvc加载器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--springboot整合junit-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!--test所需包-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <scope>test</scope>
            </dependency>
    
            <!-- <dependency>
                 <groupId>tk.mybatis</groupId>
                 <artifactId>mapper</artifactId>
                 <version>3.4.0</version>
             </dependency>-->
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
    
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper-spring-boot-starter</artifactId>
                <version>RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.0.1</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
        </dependencies>
    </project>

2.创建springboot启动类进行启动

  /**
     * @ClassName SpringbootApplication
     * @Description TODO
     * @Author liujie
     * @Date 2021/6/10 18:52
     * @Version 1.0
     **/
    @SpringBootApplication
    @MapperScan(basePackages = {"com.guigu.liujie.mybatis.mapper"})
    public class UserApplication {
        public static void main(String[] args) {
            SpringApplication.run(UserApplication.class,args);
        }
        @Bean
        public RedisTemplate<Object, Object> redisTemplate(
                RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
            RedisTemplate<Object, Object> template = new RedisTemplate<>();
            template.setConnectionFactory(redisConnectionFactory);
            //设置key的值为字符串序列化方式 那么在使用过程中key 一定只能是字符串
            template.setKeySerializer(new StringRedisSerializer());
            //设置value的序列化机制为JDK自带的方式
            template.setValueSerializer(new JdkSerializationRedisSerializer());
            return template;
        }
    }

3.创建application.yml文件

 spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost/springboot_user?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
        password: 123456
        username: root
      redis:
        host: localhost
        port: 6379
    mybatis:
      mapper-locations: classpath:mappers/*.xml #定义xml文件位置,不是必须的,如果需要在xml写sql请配置此选项
      type-aliases-package: com.guigu.liujie.pojo  # 注意:对应实体类的路径
    mapper:
      mappers: com.guigu.liujie.mybaits.TkMapper #通用基类配置
      identity: MYSQL

4.创建通用mapper基类TkMapper

   /**Mapper基类
     * @author liujie
     */
    public interface TkMapper<T> extends Mapper<T>, MySqlMapper<T> {
    
    }

5.控制器Controller的编写

  /**
     * @ClassName UserController
     * @Description TODO
     * @Author liujie
     * @Date 2021/6/10 11:18
     * @Version 1.0
     **/
    @RestController
    @RequestMapping("/user")
    public class UserController {
        @Autowired
        private UserService userService;
        @RequestMapping("/findUserAll")
        public Object findUserAll(){
            return userService.findAllUser();
        }
    }

6.服务层Service的搭建

   /**
     * @ClassName UserServiceImpl
     * @Description TODO
     * @Author liujie
     * @Date 2021/6/10 11:00
     * @Version 1.0
     **/
    @Service
    public class UserServiceImpl implements UserService {
        @Resource
        private UserMapper userMapper;
        @Autowired
        private RedisTemplate redisTemplate;
        /**
         * 查询所有用户
         *
         * @return
         */
        @Override
        public List<User> findAllUser() {
            List<User> userList = (List<User>) redisTemplate.boundValueOps("userList").get();
    
            if(userList==null||userList.size()<=0){
                System.out.println("mysql查询");
                userList = userMapper.selectAll();
                redisTemplate.boundValueOps("userList").set(userList);
            }
            return userList;
        }
    }
    

7.持久层mapper的构建

 package com.guigu.liujie.mybaits.mapper;
    
    import com.guigu.liujie.mybaits.TkMapper;
    import com.guigu.liujie.pojo.User;
    import org.apache.ibatis.annotations.Mapper;
    
    /**
     * @author liujie
     */
    @Mapper
    public interface UserMapper extends TkMapper<User> {
    
    }

8.测试效果图

在这里插入图片描述

userList对象以jdk序列化的形式存入了redis中

Spring Boot中集成Redis可以通过以下步骤实现: 1. 引入spring-boot-starter-data-redis依赖。在项目的pom.xml文件中,添加以下依赖项: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 这将自动引入与Redis集成所需的依赖项。 2.Spring Boot的核心配置文件application.properties中配置Redis连接信息。在该文件中添加以下配置项: ``` spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.password=123456 ``` 根据你的实际情况,将host、port和password替换为相应的值。这些配置将用于建立与Redis服务器的连接。 通过以上步骤,你就成功地在Spring Boot应用程序中集成Redis。现在,你可以使用Spring Data Redis的API来访问和操作Redis数据库。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SpringBoot集成redis](https://blog.csdn.net/qq_43512320/article/details/122684865)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [springboot集成Redis](https://blog.csdn.net/m0_54853420/article/details/126515971)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值