(一)Java秒杀项目之项目环境搭建
一、Spring Boot环境搭建
1、把项目分成多个模块,每个模块对应一部分(不一定是一个章节)的内容,代码将在文章的具体位置给出,每个模块都是在之前模块的基础上构建,每个模块都为Spring Boot项目。
2、idea中新建一个Empty Project名为mymiaosha,在其下新建第一章对应的模块mymiaosha1,该模块代码包含到下文的二、集成Thymeleaf,Result结果封装为止,具体代码见下文。
二、集成Thymeleaf,Result结果封装
1、Result结果封装
1、对返回的JSON数据进行统一处理,一般包含状态码(code),状态信息(msg),数据(data),新建结果类Result,其中声明这三个变量用来封装返回数据,就可以用类似 new Result(0, "success", {data} ); new Result(500100, "服务端异常", null); 这种形式返回
2、为了进行更好的封装,可以在Result类中再做一次封装,封装成静态泛型方法使用类名直接调用,封装完后使用 Result.success( {data} ); Result.error(500100, "服务端异常");这种形式返回
3、由于状态码和状态信息是一体的,可以新建CodeMsg类来封装,声明状态码(code)、状态信息(msg)变量,然后进一步封装一个CodeMsg类型的静态变量,封装完后使用 Result.error(CodeMsg.SERVER_ERROR);来返回
4、由于具体数据的类型不确定,一般使用T类型,所以结果类也是一个泛型类,最后返回的类型就可以使用类似Result<String>这样
2、集成Thymeleaf
加入spring-boot-starter-thymeleaf依赖,默认的Thymeleaf模版文件放置位置如下,也可以自己更改。由于默认是这样,所以代码中省略没写
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
Thymeleaf其实就是html文件,需要在头部进行声明,再使用
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'hello:'+${name}" ></p>
</body>
</html>
最后新建控制类进行测试,具体见代码。如果上面文案不清楚的话,建议看我的代码提交,每一次提交依次对应构建的每一步。
至此,mymiaosha1模块构建完毕,上述文章代码参见我的本项目仓库地址中的mymiaosha1模块。同时下文在mymiaosha2模块上构建,mymiaosha2模块由mymiaosha1模块复制而来。
三、集成Mybatis+Druid
从这里开始,将在mymiaosha2模块上开发。
引入mybatis-spring-boot-starter依赖,它包含了mybatis依赖;引入druid依赖,mysql-connection-java依赖
配置数据库连接信息,使用Mybatis注解方式,直接在dao层接口方法上使用mybatis依赖下的注解
spring.datasource.url=jdbc:mysql://localhost:3306/miaosha?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring-tx依赖下的@Transactional注解可以用在业务层的方法上进行事务管理
四、集成Jedis+Redis安装+通用缓存Key封装
Redis安装请参考我的文章Redis在Mac上的下载安装
SpringBoot项目中通过Jedis操作Redis请参考我的文章Spring Boot通过Jedis来操作Redis
通用缓存Key封装一般采用如下方式:接口->抽象类->实现类
最新文章
- WBS功能分解
- 【FFXV】中物理模拟的结构以及游戏业界的乐趣
- 将具有关联关系的两个表从hibernate查询出来转成json对象时报错
- IOS 7 Study - UIDatePicker
- 在hibernate中使用c3p0数据源
- 【转】分享II→IV FPGA本人的几个版本电源模块设计的方案
- 使用Vitamio打造自己的Android万能播放器(4)——本地播放(快捷搜索、数据存储)
- Pat(Advanced Level)Practice--1043(Is It a Binary Search Tree)
- makefile 学习一
- Linux在高铁项目的部署环境
- Directed Roads
- 编译错误:expected an indented block
- Linux 系统日志
- std::string的拷贝赋值研究
- vuex 管理vue-router的传值
- 使用 urllib 构造请求对象
- YII assets使用
- javaSE——字符流
- 最新wireshark抓包教程
- Camel之AsyncProcessor