一、前言
我们用redis做数据库 ,使用springboot2.6集成restful服务。
前提:配置好了redis
二、步骤
1、增加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
我现在完整的pom.xml文件,也是非常少的代码:
<?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.tuyuan</groupId>
<artifactId>springboot2edu</artifactId>
<version>1.0-SNAPSHOT</version>
<name>springboot2edu</name>
<url>http://www.xiaoke365.cn</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2、service类
先写好一个用户的service类,非常简单,实现了新增和查询:
package com.tuyuan.springboot2edu.user;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
@Service
public class UserService {
@Autowired
private RedisTemplate redisTemplate;
final static String USER_TABLE= "USER_TABLE";
public boolean saveUser(){
for(int i =0;i<20;i++){
User u = new User();
u.setAge(i);
u.setBirtDate(new Date());
u.setName("damao"+i);
u.setSex(true);
u.setPsw("123123");
redisTemplate.opsForList().leftPush(USER_TABLE,u);
}
return true;
}
public List getUserAll(){
return redisTemplate.opsForList().range(USER_TABLE,0,-1);
}
}
- 在这个类里把RedisTemplate 通过@Autowired注解引入进来。
- 这个类要标记成@Service
3、controller层代码
package com.tuyuan.springboot2edu.user;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
public static final Logger log = LoggerFactory.getLogger(UserController.class);
@Autowired
UserService userService;
@RequestMapping(value = "/add")
public void userAdd(){
System.out.println("this is user add controller...................");
boolean b =userService.saveUser();
System.out.println(b);
}
@RequestMapping(value = "/list")
@ResponseBody
public List<User> userListAll(){
List userlistall = userService.getUserAll();
return userlistall;
}
}
- 类需要注解成@RestController
- 方法上面增加注解@RequestMapping(value = “/add”) ,以公开出接口,供外部调用。
- 方法上面增加@ResponseBody ,返回值即可自动生成json格式的数据。比如我们调用新增后,再调用:http://localhost:8081/list ,返回如下json数据:
三、说明
1、关键注解
@Controller 标识一个类为控制器。
@RequestMapping URL的映射。
@ResponseBody 返回结果转换为JSON字符串。
@RequestBody 表示接收JSON格式字符串参数。
2、项目中一般没有严格执行restful风格
Restful标准是建议使用 HTTP 的 GET\POST\PUT\DELETE 来区分操作资源。而HTTP Method 本身就对外部不友好,是隐藏的方法,因此一般只使用get和post ,然后把动词加入到 url 中,简单易懂。
GET\POST\PUT\DELETE 的兼容性有待认证,首先是兼容老的系统,大部分 HTTP 应用是基于 GET/POST 来实现的。