背景: springBoot 环境搭建记录
相关环境
- JAVA Version: 1.8
- Maven Version: 3.6
- springBoot Version: 2.3.1
- 编译器:IDEA
初始化框架
- 创建项目

- 选择springBoot模版

- 对应修改名称

- 选择依赖

- 创建完毕

- 验证
# 编译项目
mvn clean install
# 运行
java -jar ./target/demo-0.0.1-SNAPSHOT.jar

编写简单逻辑
分层
后端代码分层是很普遍的一个事情,能够将后台代码更好更优雅的去管理,也方便后续迭代优化。 本示例将分成三层(入口,逻辑,实体) 举个例子,比如我们想要实现一个获取最热的帖子数据,那么我们可以这么实现:
- 在入口层做一些校验(比如用户登陆态/参数不合法)
- 检验通过,进入逻辑层,做一些实现逻辑。例如需求里将某个帖子置为不可见(我们可以遍历删除),或者将最热的前十个帖子按照时间排序。都可以在该层去操作。
- 实体层,封装一些数据相关实体,比如帖子都有哪些维度的数据。还有,与数据库进行交互,取最热的帖子,简单来说,就是从帖子列表里获取访问量最大的十条数据。

controller
- 实现controller
// 添加注解
@RestController
public class TestController {
// 路由注解
@GetMapping("test")
public String test() {
// 具体实现 返回字符串
return "success";
}
}
- 测试
# 运行程序后
# 测试 IP:Port/func
curl 127.0.0.1:8080/test

- 连接数据库
# pom.xml 增加 mabatis 和 mysql-connect-java 插件导入
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
在配置文件-application.yml 加上mysql相关配置
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/tProgram?characterEncoding=utf-8&useSSL=false
username: root
password: XXXXXXX
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath*:mapper/*Mapper.xml
type-aliases-package: com.myself.mybatis.entity
# 建表语句
create table article (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`article` varchar(1000) NOT NULL DEFAULT '' COMMENT '文章内容',
`viewNum` int(11) NOT NULL DEFAULT 0 COMMENT '浏览量',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文章';
insert into article (article, viewNum) value ("test1", 10);
- 编写domain
还是获取最热文章的例子
@Mapper
@Repository
public interface ArticleMapper {
/**
* 获取最热文章列表
* @param limit
* @return
*/
@Select("SELECT * FROM article ORDER BY viewNum DESC LIMIT #{limit}")
List<Article> getHotList(int limit);
}
- 运行
# 请求
curl 127.0.0.1:8080/article/hotList
# 返回值
[{"id":4,"article":"test4","viewNum":30},{"id":1,"article":"test1","viewNum":10},{"id":3,"article":"test3","viewNum":10},{"id":5,"article":"test5","viewNum":8},{"id":2,"article":"test2","viewNum":3}]
使用缓存REDIS
- 增加依赖
# pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
# 对应配置 application.yml
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/tProgram?characterEncoding=utf-8&useSSL=false
username: root
password: genglintong
driver-class-name: com.mysql.cj.jdbc.Driver
redis:
host: 127.0.0.1
port: 6379
password:
- 修改逻辑
// 获取最热文章列表 - 逻辑层
public List<Article> getHotList() {
//return articleMapper.getHotList(articleConf.LIMIT_NUM);
// 1. 首先读取 redis
String data = stringRedisTemplate.opsForValue().get(articleConf.HOT_LIST_CACHE_KEY);
// 2. 缓存中有数据 直接返回
if (data != null) {
System.out.println("使用缓存数据");
return JSON.parseArray(data, Article.class);
}
// 3. 读取数据库
List<Article> list = articleMapper.getHotList(articleConf.LIMIT_NUM);
// 4. 写入缓存 key value 缓存时间 缓存单位
stringRedisTemplate.opsForValue().set(articleConf.HOT_LIST_CACHE_KEY, JSON.toJSONString(list), articleConf.CACHE_TIME, TimeUnit.SECONDS);
System.out.println("使用数据库数据数据");
return list;
}
- 测试
curl 127.0.0.1:8080/article/hotList


日志组件暂时没加,先使用的控制台打印