IDEA中Lombok插件的作用
数据库:库 表 字段 值 User表(id,name,age)
实体对象pojo:用来封装数据库中的数据 User类 (id,name,age)
实体对象方法:get/set/toString/构造(无参/有参)/equals/hashcode
Lombok作用:自动生成上述方法
POM.XML文件标签说明
关于坐标的说明
在本地仓库中是唯一的标识符 是当前项目打包/被依赖的唯一路径
如果项目中依赖第三方jar包文件报错,如何处理????
根据坐标下载jar包文件时,可能由于网络问题下载不完整,
解决:根据坐标查找本地仓库位置,删除
maven项目打包方式
1.默认条件下 jar包
2.web项目 可以打成war包
3.如果该项目是父级项目,则写pom 在坐标下添加packaging标签
父级parent标签作用
依赖相关说明
思想:“开箱即用”是SpringBoot设计的核心 越来越简单
启动项:SpringBoot专门为整合第三方框架,写了启动项jar包文件,将所有配置信息/需要依赖的jar包文件提前测试并且定义
Maven依赖的传递性
maven中的jar包是由依赖传递性的
maven的依赖传递性实现的原理
本地仓库文件说明
步骤:
1.maven开始解析pom.xml文件,根据依赖的坐标找到指定jar包 然后添加该依赖
2.扫描当前文件中的xxx.pom文件
3.扫描xxx.pom中的依赖信息
4.重复执行以上操作 直到所有依赖添加完成
实现文件传递有效性
网络数据的传输,一般需要加密处理 maven中采用SHA1数字签名的加密算法,保证数据传递的有效性(hash算法)
散列值形式:40个十六进制数
数字证书?? 判断哈希码值是否相同 不同数据小概率相同
摘要:对数据进行hash计算,生成的哈希码值为摘要(签名)
maven采用对称加密算法 主流为非对称加密
关于Hash说明
1.常见hashcode值有多少16进制数组成 8位
2.8位的16进制数有多少种排列组合 2^32
3.相同的数据进行hash(算法相同),值是否相同?? 必定相同
4.不同数据进行hash(算法相同),值是否相同??可能相同 哈希碰撞
5.一个数据1kb,一个数据1GB ,哈希计算的速度谁快?? 一样快
SpringBoot高级用法
配置文件的说明
1.pro文件语法
数据结构类型:key=value 特别注意:不要有空格
字符集编码:程序读取文件时,默认采用ISO-8859-1编码
弊端:所有的key都要写完整,不能缩进
2.yml文件语法
数据结构: key:(空格)value
层级代码结构,注意缩进
字符集:文件读取器时,默认采用UTF-8编码
规则:命名时指定前缀
@RestController 作用
1.将该类交给Spring容器管理
2.SpringMVC负责调用该对象接收用户的请求
3.将业务处理之后,为页面返回JSON数据
@ResponseBody将数据转化为JSON串
动态为属性赋值
说明:数据写死不方便
方案:有些数据是后台特有的,一般将数据写到配置文件里
利用yml文件为属性赋值
步骤:
1.指定业务的Key
2.@Value("${Key}")
spel表达式${Key}
语法:从spring容器内取出key,动态为属性赋值
项目结构
@RestController
public class JDBCController {
@Value("${mysql.name}")
String name;
@Value("${mysql.password}")
String password;
@RequestMapping("get")
public String get(){
return "你好"+name+password;
}
}
问题
原因
配置文件的名字必须为application!!!
利用properties文件为属性赋值
yml与pro
yml:系统配置文件,springboot的核心配置文件,用来整合第三方框架,耦合性高,所以写在pro文件中
如何将pro文件交给Spring容器管理
@PropertySource(“calsspath:/mysql.properties”)
@RestController
@PropertySource(value="classpath:/mysql.properties",encoding = "UTF-8")
public class JDBCController {
@Value("${mysql.name}")
String name;
@Value("${mysql.password}")
String password;
@RequestMapping("/get")
public String get(){
return "你好"+name+password;
}
@Value("${mysql.name2}")
String name2;
@Value("${mysql.password2}")
String password2;
@RequestMapping("/get2")
public String get2(){
return "你好"+name2+password2;
}
}
# 应用名称
spring.application.name=springboot_demo1
# 应用服务 WEB 访问端口
server.port=8080
mysql.name2=数据库
mysql.password2=你猜猜