网站首页 > 精选文章 / 正文
[实战]Spring Boot入门
原创 东风四十二 程序员小酒馆 2025年03月03日 20:01 江苏
以下是基于JDK 17的Spring Boot入门案例,整合Redis并实现常用功能的详细步骤
1.环境准备:JDK17、IDE、Redis安装。
2.创建Spring Boot项目,添加必要依赖。
3.配置Redis连接信息。
4.创建Redis配置类,自定义Template。
5.编写Service层,实现Redis操作。
6.编写Controller,暴露API。
7.测试功能,验证结果。
一、环境准备
1. 安装JDK 17
从Oracle或OpenJDK官网下载JDK 17,配置环境变量`JAVA_HOME`并验证安装:
java -version
应输出JDK 17版本信息
2. 安装Redis
本地安装Redis服务(推荐使用Docker快速启动):
docker run --name my-redis -p 6379:6379 -d redis
二、创建Spring Boot项目
1. 通过Spring Initializr初始化项目
访问start.spring.io
,选择:
- Project
- : Maven
- Language
- : Java
- Spring Boot
- : 3.1.x
- Dependencies
- : Spring Web, Spring Data Redis
2. 项目结构
生成的项目包含:
src/main/java
├── com/example/demo
│ ├── DemoApplication.java # 主启动类
│ ├── config/RedisConfig.java # Redis配置类
│ ├── service/RedisService.java # Redis操作服务
│ └── controller/ApiController.java # REST接口
三、整合Redis
1. 配置Redis连接
在`application.properties`中添加:
spring.redis.host=localhost
spring.redis.port=6379
# 若Redis有密码则添加:
# spring.redis.password=yourpassword[6,7](@ref)
2. 自定义Redis序列化配置
创建`RedisConfig.java`,避免二进制乱码:
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
RedisTemplate template = new RedisTemplate<>();
template.setConnectionFactory(factory);
// 使用JSON序列化
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}
}
四、实现Redis常用功能
1. 基础CRUD服务类
@Service
public class RedisService {
@Autowired
private RedisTemplate redisTemplate;
// 存储数据(带过期时间)
public void set(String key, Object value, long timeout, TimeUnit unit) {
redisTemplate.opsForValue().set(key, value, timeout, unit);
}
// 获取数据
public Object get(String key) {
return redisTemplate.opsForValue().get(key);
}
// 删除数据
public Boolean delete(String key) {
return redisTemplate.delete(key);
}
// 存储Hash类型
public void hSet(String key, String field, Object value) {
redisTemplate.opsForHash().put(key, field, value);
}
}
2. 使用Spring Cache注解缓存
在主类上启用缓存:
@SpringBootApplication
@EnableCaching
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
在Service方法上添加缓存:
@Cacheable(value = "userCache", key = "#id")
public User getUserById(Long id) {
// 模拟数据库查询
return userRepository.findById(id).orElse(null);
}
五、编写测试接口
@RestController
@RequestMapping("/api")
public class ApiController {
@Autowired
private RedisService redisService;
@PostMapping("/set")
public String setData(@RequestParam String key, @RequestParam String value) {
redisService.set(key, value, 10, TimeUnit.MINUTES); // 10分钟过期
return "数据已存储";
}
@GetMapping("/get")
public Object getData(@RequestParam String key) {
return redisService.get(key);
}
@DeleteMapping("/delete")
public String deleteData(@RequestParam String key) {
return redisService.delete(key) ? "删除成功" : "键不存在";
}
}
六、运行与测试
1. 启动应用
mvn spring-boot:run
2. 测试接口
使用`curl`或Postman发送请求:
# 存储数据
curl -X POST "http://localhost:8080/api/set?key=name&value=SpringBoot"
# 获取数据
curl "http://localhost:8080/api/get?key=name"
# 删除数据
curl -X DELETE "http://localhost:8080/api/delete?key=name"
七、扩展功能建议
1. 连接池优化
在`application.properties`中配置Lettuce连接池参数:
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-idle=4
2. 缓存穿透处理
使用`@Cacheable`的`unless`条件或布隆过滤器避免频繁查询空值。
通过以上步骤,您已完成一个基于JDK 17的Spring Boot入门案例,整合了Redis的常用功能。如需进一步优化,可参考Spring Data Redis官方文档。
微信扫一扫
关注该公众号
Tags:opsforhash
猜你喜欢
- 2025-03-26 SpringBoot整合Redis实现常用功能
- 2025-03-26 Redis - Springboot中集成多个Redis客户端统一管理
- 2025-03-26 高并发基础-一文带你了解Redis及其常见用法与应用场景
- 2025-03-26 零基础上手秒杀系统:抢购接口隐藏 + 单用户限制频率
- 2025-03-26 Spring Boot(十七):集成和使用Redis
- 2025-03-26 Redis在Java项目中的高级应用:从缓存到分布式锁的全面解析
- 2025-03-26 分布式锁——程序员の抢厕所哲学(分布式锁锁的是什么?)
- 2025-03-26 京东大佬问我,每天新增100w订单数据的分库分表方案
- 2025-03-26 「SpringCloud」(五十三) 微信小程序授权登录增加多租户配置
- 2025-03-26 还在只用 RedisTemplate 访问 Redis 吗?这几种方式给你安排上!