Springboot自动装配 - redis和redission

Springboot自动装配 - redis和redission

    • [1. 自动装配](#1. 自动装配)
    • [2. redis自动装配示例](#2. redis自动装配示例)

1. 自动装配

Spring Boot的核心理念是简化Spring应用的搭建和开发过程,提出了约定大于配置和自动装配的思想 。开发Spring项目通常要配置xml文件,当项目变得复杂的时候,xml的配置文件也将变得极其复杂。为了解决这个问题,我们将一些常用的通用的配置先配置好,要用的时候直接装上去,不用的时候卸下来,这些就是Spring Boot框架在Spring框架的基础上要解决的问题。

Spring Boot的自动装配得益于有一批优秀的程序员写好了很多场景启动器(starter),比如web场景下的spring-boot-starter-web,cache场景下的spring-boot-starter-cache等。

2. redis自动装配示例

step 1: 引入依赖

java 复制代码
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

step 2: 配置文件中增加redis配置

java 复制代码
spring:
  redis:
    host: 127.0.0.1
    port: 6379

step 3: 注入redisTemplate

java 复制代码
1. 可以直接在要使用的地方注入
    @Autowired
    private RedisTemplate<Object,Object> redisTemplate;
 2. 也可以使用构造方法注入
 public class useCacheManager{
	    private final RedisTemplate<Object,Object> redisTemplate;
	    private final String caffeineSpec;
			public useCacheManager(RedisTemplate<Object,Object> redisTemplate){
				this.redisTemplate = redisTemplate;
				this.caffeineSpec = "";
			}
	}

Boot 默认自动配置的 RedisTemplate的泛型类型是 <Object, Object>。而您在代码中注入时,通常声明的是更具体的类型,例如 RedisTemplate<String, Object>。由于 @Autowired默认按类型注入,它会寻找完全匹配的泛型类型,因此找不到就会报错

step 4(可选): 使用更具体的类型,需要增加自定义配置

java 复制代码
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.StringRedisSerializer;

@Configuration
public class RedisConfig {
    
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);
        
        // 建议设置key的序列化器,避免在Redis中看到乱码
        template.setKeySerializer(new StringRedisSerializer());
        // 可以根据需要设置value的序列化器,例如Jackson2JsonRedisSerializer
        // template.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));
        
        return template;
    }
}

step 5: 使用

java 复制代码
redisTemplate.opsForValue().set(key, value);
redisTemplate.opsForValue().get(key);
相关推荐
我命由我1234515 分钟前
人脸识别 - 人脸识别选帧
java·人工智能·python·算法·安全·java-ee·人脸识别
宠友信息17 分钟前
IM系统开发技术路线分析,即时通讯源码助力快速搭建聊天应用
java·spring boot·redis·websocket·mysql·uni-app·vue
肠畔码农35 分钟前
Redis 主从复制内核深潜:从物理模型到全量增量同步的本质
网络·redis·php
long3161 小时前
封装(Encapsulation)
java·人工智能·ai·ai编程
yaoxin5211231 小时前
502. Java 反射 - 编写 MessageInterceptor 类
java·开发语言
风流 少年1 小时前
Spring AI 2.0:阿里云百炼平台(工作流应用)
java·后端·spring
长谷深风1111 小时前
AI Tool 设计:粒度、参数与错误恢复怎么做
java·大数据·人工智能·ai agent·agent工作流·智能体设计·ai产品设计
QQ_21696290962 小时前
【项目编号:project95315】SpringBoot公共自习室管理系统:座位预约、房间管理、签到核销、公告规则完整实战
java·spring boot·后端
凤山老林2 小时前
高可用服务容错架构:Spring Boot 集成 Resilience4j 实战指南
spring boot·后端·架构·resilience4j
嵌入式阿蔡3 小时前
面试高频考点 01:volatile / 中断 / 堆栈 八股精讲
java·面试·职场和发展·嵌入式实时数据库