parent
1 开发SpringBoot程序要继承pring-boot-starter-parent
2 spring-boot-starter-parent中定义了若干个依赖管理
3 继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突
4 继承parent的形式也可以才用引入依赖的形式实现效果
starter
spring-boot-starter-web.pom
SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,目的是减少依赖配置
parent
所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),已达到减少依赖冲突的目的
spring-boot-starter-parent各版本见存在着诸多坐标版本不同
实际开发
使用任意坐标时,仅书写GAV中的G和A ,V由SpringBoot提供,除非SpringBoot未提供对应的版本v
如坐标发生错误,再指定Version(小心发生版本冲突)
开发SpringBoot需要导入坐标,通常导入对应的starter
每个starter根据功能不同,通常包含多个依赖坐标
使用starter可以实现快速配置的效果,达到简化配置的目的
引导类Application
SpringBoot的引导类是Boot工程的执行入口,运行main方法可启动项目
SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean
内嵌服务器
tomcat(默认)apache出品,用户多,应用面广,负载若干较重的组件
jetty 轻量级,负载性能不及tomcat
undertow 负载性能勉强跑赢tomcat
内嵌tomcat服务器时SpringBoot辅助功能之一
内嵌tomcat工作原理是将tomcat服务器作为对象运行,并将该对象交给spring容器管理
变更内嵌服务器是excusion 现有服务器 然后 dependec全新服务器
REST开发
REST(Representational State Transfer) 表现形式转换
传统风格资源描述形式
http://localhost/user/getById?id=1http://localhost/user/saveUser
REST风格描述形式
http://localhost/user/1
优点:1)隐藏资源的访问行为,无法通过地址的值对资源是何种操作 2)书写简化
按照REST风格访问资源师使用行为动作区分地资源进行了何种操作:
http://localhost/users 查询用户信息 GET(查询)
http://localhost/users/1 查询指定用户信息 GET(查询) 删除用户信息DELETE(删除)
http://localhost/users 添加用户信息 POST(新增/保存) 修改用户信息PUT(修改/更新)
根据REST风格对资源进行访问称为RESTful
TIPS:
上述行为是约定行为,约定不是规范,可以打破,所以称REST风格,而不是REST规范
描述模块的名称使用复数,就是加S的格式描述,表示此类资源,而非单个资源如:users,books,accounts…
1 设定http请求动作(GET / PUT/POST…)
@RequesMapping(value=“地址”,method = RequestMethod.XX)
2 设定请求参数(路径变量)
@RequesMapping(value=“地址/{id}”,method = RequestMethod.XX)
Function(**@pathVariable **Integer id)
@RequestBody @RuquestParam @PathVariable
区别:
@RequestBody 用于接收json数据
@RuquestParam 用于接收url地址传参或表单传参
@@PathVariable 用于接收路径参数 使用{参数ID}描述路径参数
应用
在后期开发中,发送请求参数超过一个时,以json格式为主 ,@RequestBody应用较广
如果发送非json格式数据,选用@RequestParam接收请求参数
采用RESTful进行开发,当参数数量较少时,例如一个,可以用@PathVariable接收请求路径变量,通常用于传递ID值
@RestController = @Controller + @ResposeBody 基于Spring MVC的RESTful开发控制器类定义上方
@GetMapping @PostMapping @PutMapping @DeleteMapping 设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作
例如
@RequesMapping(value=“地址/{id}”,method = RequestMethod.XX)——》 @XXMaping({id})
Function(**@pathVariable **Integer id)
属性配置
修改服务器端口 GET http://localhost:8080/books → http://localhost/books server.port=80
SpringBoot默认配置文件application.properties 通过key-value配置对应属性
修改banner SpringBoot工程日志启动时候的图标
修改日志loging
可在SpringBoot官方文档Application Properties查看内置属性配置
SpringBoot中导入对应starter后,提供对应配置属性
书写SpringBoot配置才用关键字+提示形式书写
SpringBoot提供了三种配置文件的格式 1)properties(传统/默认)2)yml(主流)3)yaml
三个配置文件的加载顺序 properties>yma>yaml
指定SpringBoot配置文件 1)Setting→Project Stricture → Facets 2)选中对应项目/工程 3)Customize Spring Boot 4)选择配置文件
yaml (YAML Ain,t Markup Language)
一种数据序列化格式
优点1)容易阅读 2)容易与脚本语言交互 3)以数据为核心,重数据轻格式
YAML 文件拓展名 .yml(主流) .yaml
yaml语法规则
1)大小敏感
2)属性层级关系使用多行描述,每行结尾使用冒号结束
3)使用缩进表示层级关系,用层级左侧对齐,只允许使用空格(不允许使用Tab键)
4)属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分割)
5)#表示注释
核心规则: 数据前面加空格和冒号隔开
字面值表示方式
boolean: TRUE float: 3.14 int: 123 null: ~ string: HelloWorle string2: “Hello World” date: 2018-02-17 datetime: 2018-02-17T15:02:31+08:00
数组标识方式:在属性名书写位置的下方使用建好作为数据开始符号,每行书写一个数据,建好与数据间空格分隔
subject:
- Java
- 前端
- 大数据
likes:[a,b] # 数组书写
users:
-name: Tom
age: 4
users2: [{name: Tom , age: 4}]#对象数组缩略格式
yaml数据读取
使用@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名…} 如 @Value(“${user.name}”)
在配置文件中可以使用属性名引用方式引用属性
baseDir: /user/local/fire
center:
dataDir: ${baseDir}/data
tempDir: ${baseDir}/tmp
属性值中如果出现转移字符,需要使用双引号包裹
lesson: "Spring\tboot\lesson"
封装全部数据到Enviroment对象
@Autowired
private Environment env;
env.getproties("属性名")
//1.定义数据模型封装yaml文件中对应的数据
//2.定义为spring管控的bean
@Component
//3.指定加载的数据
@ConfigurationProperties(prefix="datasource")
public class MyDataSource{
...
}
#创建类,用于封装下面的数据
#由spring帮我们去加载数据到对象中,一定要告诉spring加载这组信息
#使用时从spring中直接获取信息使用
datesource:
.....
SpringBoot整合JUnit
name: @SpringBootTest
type: 测试类注解
position: 测试类定义上方
effect: 设置Jnit记载的SpringBoot启动类
@SpringBoot
class SpringbootJUnitApplicationTests{}
@SpringBootTest(classes = SpringBootJunitApplication.class)
class SpringBootNewJUnitApplicationTests{}
步骤:1)导入测试对应的starter 2)测试类使用@SpringBootTest修饰 3)使用自动装配的形式添加被测试对象
如果测试类在SpringBoot启动类的包虎自爆中,可以省略启动类的设置,也就是省略calsses=…的设定
SpringBoot整合MyBatis
1)在新建模块时候勾选MyBatis技术,导入MyBatis对应的starter
2)数据库连接相关信息转换成配置
3)数据库SQL映射需要添加@Mapper被容器识别
MySQL 8.x驱动强制要求设置时区:
修改url,添加serverTimezone设定 or 修改MySQL数据库配置
整合MyBatis-Plus
MyBatos-Plus与MyBatis区别:1)导入坐标不同2)数据层数显简化
步骤:
1)手动添加SpringBoot整合MyBatis-Plus的坐标,可以通过mvnrespository获取
TIPS:由于SpringBoot中未收录MyBatis-Plus的坐标版本,需要指定对应的Version
2)定义数据层接口与映射配置,继承BaseMapper
@Mapper
public interface UserDao extends BaseMapper<User>{
}
3)其他相同
整合第三方技术,导入对应Maven坐标