SpringBoot
[toc]
起源
SSH(struts spring hibernate)
SSM(spring springMVC mybatis)
前两个框架太多配置, 非常不方便,
SpringBoot 思路是约定优于配置, 帮助用户整合了很多配置, 其本质还是SSM
新建Spring项目
通过浏览器下载
打开Spring网站
分别选择
Project: Maven Project
Language : Java
SpringBoot: 2.3.1
(更高的版本都不是稳定版本)
Group: com.neuedu
ArtifactId: neuedu-his
Name: neuedu-his
Description: Demo project for SpringBoot
Package name: com.neuedu.his
(包名不能有 -
)
Packaging: Jar
Java: 8
点 generate, 下载项目
通过idea下载
新建Spring项目, 然后网站选defult, 然后和官网几乎相同的配置
然后会进行依赖的选择,
Developer Tools
Spring Boot DevTools
(热部署, 用于不重启服务器的情况下进行编译部署. 但是不推荐开, 很麻烦)
Lombok
Spring Configuration Processor
Web
Spring Web
(勾选, )
Spring Reactive Web
(实时响应, 但本次不涉及)
Spring Session
(这次不勾, 但建议学习. 在分布式中Session 共享(用redis实现))
SQL
数据库, 用于数据持久化
勾选以下内容:
mybatis Framework
MySQL Driver
NoSQL
Spring Data Redis (Access+Driver)
Spring Data Elasticsearch (Access+Driver)
Messaging
Spring fo RabbitMQ
1
2
3
4
5
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<name>${project.artifactId}</name>
<description>睿道HIS系统</description>
需要在pom.xml文件中继承 注意到这个 denpendency中很多没写版本, 这个是由于springboot已经对这个进行了很多管理, 当然也可以自己进行配置.
1
2
3
4
5
6
7
8
9
10
<!-- 继承父模块 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 排除依赖,一般是和其他模块出现依赖冲突时,就要排除部分依赖 -->
<exlusions>
resource 配置
如果是手动建立的 src/main/resources
文件夹, 记得使用右键, mark as resource
两种配置方法(两者选其一) 其实本质上差不多, 转换工具 application是全局配置
application.yml
注意使用两个空格进行缩进
1
2
3
server:
port: 8888
address: localhost
application.properties
1
2
server.port= 8080
servet.address= localhost
返回给前端的接口
返回值是对象, 会自动转化为Json
1
2
3
4
5
6
7
8
9
10
11
@RestController
public class TestController {
@GetMapping("test")
public User testUrl() {
User user = new User();
user.setUsername("张三");
user.setUseraddress("20");
user.setUsersex("男");
return user;
}
}
1
2
// localhost:8888/test
{"username":"张三","useraddress":"20","usersex":"男"}
Lombok
在类前使用 @Data
就可以自动生成 get/set
方法(准确的说是不用自己写, 然后可以自动调用, 及时生成, 哪怕是成员的名称发生了改变)
注入对象
要想注入对象, 必须将注入对象的类放在同级或子包中.(主要是指带入口的那个文件)
常见问题
Error:(3, 32) java: 程序包org.springframework.boot不存在
在setting中查找 runner->将IDE构建/运行 委托给Maven 将这个选项勾上, 重新编译即可
并且还要注意Maven设置的路径和配置文件是否正确
最终的解决方案很奇葩, 认为是idea2020的bug, 所以就在setting.xml中删除关于本地仓库的路径, 而在idea中强制规定路径, 然后重启idea, 就可以正常使用了, 使用maven接管这个构建只是一个技巧, 会影响效率.
可能会出现运行时Tomcat的报错
2020-07-01 17:51:07.196 ERROR 16900 --- [ main] o.a.catalina.core.AprLifecycleListener : An incompatible version [1.2.5] of the Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
解决方案 访问:官网网站 下载下来, 里面有32位和64位的 tcnative-1.dll 文件, 根据自己的jdk和tomcat版本选择一个, 复制到jdk 的bin目录下即可.
这是tomcat的错误, 当然老师的建议是换个Undertow 老师的简书
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--undertow-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>