之前写过一篇关于springboot的搭建,由于是初学,写的不是很好,最近重新学习springboot,这里记录一下比较全的搭建,并集成其他功能
1.环境 STS(其他开发工具大同小异) , maven 3.6 、 jdk1.8 ,springboot版本 2.1.2
2.创建简单的maven项目,在pom文件中引入以下依赖
UTF-8
1.8
1.8
org.springframework.boot
spring-boot-starter-parent
2.1.2.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-log4j2
最主要的就是父依赖,和一个 web 支持的依赖,就可以完成最简单的项目,写一个方法测试一下
目录结构如上图,App这个类要在其他类的上级或同级目录,原因在于@SpringBootApplication这个标签默认扫描规则,
启动main方法,浏览器输入 localhost:8080/hello
最基本的项目搭建完成,集成其他功能
3.热部署
eclipse中只需要加入一个依赖即可
org.springframework.boot
spring-boot-devtools
这时不需要重启项目,保存后即可直接访问,实现热部署
4.集成mybatis
引入mybatis依赖和数据库连接池依赖
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.2.0
mysql
mysql-connector-java
5.逆向工程生成实体,mapper接口和mapper的xml文件,首先在mysql数据库中新建一张表
写一个逆向工程的配置文件
在pom文件中引入插件
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2
true
true
用 命令执行即可 mvn mybatis-generator:generate
右键项目 ----> Run as ---> Maven Build... --->
即可生成实体,xml和dao接口前提你项目集成好maven
这三个文件是逆向工程生成的,
配置application.properties
# MYSQL 配置
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/sb?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=1234
# sql文件的xml路径
mybatis.mapperLocations=classpath:mapper/*.xml
# 服务端口
server.port=8080
写一个简单的测试,向数据库中插入一条数据
App需要添加一个注解,表明扫描dao层的位置
启动项目,访问 localhost:8080/test/insert/username/小明/password/123456
页面返回成功,数据库插入信息成功
6.springboot的单元测试,查询刚刚插入的数据,pom文件引入测试依赖
org.springframework.boot
spring-boot-starter-test
写一个测试方法,关键是这些注解
可以看出打印了结果,说明单元测试已经正确配置
7.springboot集成事务
在需要加入事务的类上加一个注解 @Transactional
8.全局异常捕获类,在类上加注解@ControllerAdvice,方法上加@ExceptionHandler,值为运行时异常,运行时出现异常则将被这个类捕获
9. 资源不存在时的异常不能被全局异常捕获,则需要配置一个错误页面,用到的lambda表达式
在写一个404.do的处理类
当输入一个不存在的路径时,就会被这个类处理
10.访问静态资源,在resources目录下新建一个文件夹,叫stati或者public,向里面放入一张jpg图片,然后浏览器
访问 localhost:8080/XXX.jpg,就能看到这个图片
11.支持jsp页面的集成
11.1 pom导入对jsp支持的依赖
javax.servlet
jstl
org.apache.tomcat.embed
tomcat-embed-jasper
11.2 application.properties文件加入视图解析器相关配置
#jsp页面前缀和后缀
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
11.3,由于这里是springboot项目,没有WEB-INF等相关目录,自己手动创建,红线内都是手动创建的,也可以在pom文件中指定
最后写一个测试方法
访问后得到相关页面
12.集成 thymeleaf 模板引擎
12.1首先将pom文件中的对jsp支持的依赖注释掉,加入对thymeleaf 支持的依赖
org.springframework.boot
spring-boot-starter-thymeleaf
12.2 配置文件中增加一条配置 spring.thymeleaf.cache=false,关闭缓存
# 关闭模板缓存
spring.thymeleaf.cache=false
12.3,resources目录下创建一个 templates文件夹,将html文件放进去,写一个测试方法
浏览器访问
thymeleaf 模板引擎也集成好了,至于获取复杂对象则需要了解相关知识,这里不做演示
13 集成swagger,加入依赖
io.springfox
springfox-swagger2
2.7.0
io.springfox
springfox-swagger-ui
2.7.0
13.1 写一个配置类
13.2:写一个对应的,controller,
启动项目,浏览器输入 localhost:8080/swagger-ui.html
可以看到对应的方法,直接测试,输入参数,得到结果,swagger集成成功
14.日志集成 ,默认导入了lockback,pom文件不需要再导入其他依赖
配置文件加上日志级别
logging.level.root=INFO :日志级别设置为info
logging.level.com.enjoy.controller=DEBUG:com.enjoy.controller这个包下的级别设置为debug
logging.file =F:/log/enjoy.log 日志输出到F:/log/enjoy.log 路径下
测试,在需要加日志的类上加入 private final Logger log = LoggerFactory.getLogger(UserController.class);引入的包是 org.slf4j.Logger,则调用 log.info("xxx");就会打印对应的日志
上面配置的默认的lookback日志,还有一种日志log4j2,需要排除lockback,在引入log4j2才能生效
,其他不用变,日志直接使用,同上面用法一样
15.AOP的日志应用,写一个切面类,设置参数,方法执行前后调用该类的方法,无需每个方法都做重复工作,简化开发
org.springframework.boot
spring-boot-starter-aop
执行相关方法,会打印出相应的日志
16 打包部署
16.1,打jar包,pom文件中需要添加几个插件
org.apache.maven.plugins
maven-compiler-plugin
1.8
org.springframework.boot
spring-boot-maven-plugin
org.apache.maven.plugins
maven-surefire-plugin
true
配置好以后,可以用eclipse的maven打包 右键项目——>Run As——>Maven clean先清理一下,再安装Run As——>maven install,提示成功以后,在项目的target目录下找到该项目的jar包文件,在这里打开命令窗口,输入 java -jar xxx.jar,即可启动项目
也可以用maven命令,在命令窗口手动打包,打包要在pom文件同级目录下打开命令窗口,mvn clean package命令打包,在target目录下能找到这个jar包,按上面步骤启动即可
打war包,需要在打jar包的基础上做两处修改
16.1:修改pom文件 将
16.2:在App.class中修改主方法
public class App extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(App.class);
}
需要继承SpringBootServletInitializer这个方法,重写configure方法,修改完按照上面的命令打包,就会打成war包
部署到tomcat9 中,将war包方在webapp下,启动,浏览器输入localhost:8080/项目名/路径,就可以访问了,如果不想输入项目名直接访问,需要将war包改成ROOT.war,放到webapp中,启动后直接访问就可以