20210813 第三阶段第二天
1.1properties配置文件的说明
语法
- 数据结构 key-value结构
- 写法 key=value “key2”=“value2”
- 数据类型 properties的数据类型都是字符串 所以无需添加“号
- 弊端 配置信息没有层级结构 必须写配置的全名
- 程序通过IO流进行文件的加载时,默认的字符集ISO-8859-1
1.2 YML配置文件说明
关于YML配置文件的说明
- 数据结构 key=vlaue
- 数据类型 默认是字符串 如果需要类型转化,则框架已经内部完成
- yml写法:1.key:空格)value 2.有层级结构 编辑时注意
- 字符集编码:默认程序加载时都是utf-8
2.SpringBoot为属性赋值
2.1业务说明
**说明:**由于业务需要,某些属性信息,如果直接写死在代码中则后期的扩展性不好,所以需要动态赋值。由于对象一般都是由Spring容器管理,所以该赋值的操作也应该由Spring容器管理
3.利用properties为属性赋值
3.1 需求
说明:
- YML配置文件是Spring中的核心配置文件,其中包含了整合第三方框架的信息
- 如果需要设定业务数据,一般采用properties的方式进行管理
4.SpringBoot环境切换
4.1需求说明
开发时环境称为开发环境,测试时的环境称为测试环境
开发环境:port:8080 msg=“我喜欢开发”
测试环境:port:8090 msg=“我喜欢测试”
解决方案:开始多测试环境
4.2语法说明
要求:不管是几个环境,要求配置项都必须相同,只可以不相同
- 使用—实现YML配置文件的分割
- 定义环境名称
- 定义默认环境名称
5.热部署
5.1 解释说明
- 说明:热部署一般在开发阶段比较适用,但是在发布阶段一般会取消该功能
- 作用:当程序进行修改一段时间之后,Tomcat服务器会自动的重启
- 缺点:eclipse中,兼容完美立即重启,IDEA3-5,秒之后完成重启
具体参加CSDN中ID为闪耀太阳的CGB2103-day02
5.2 lombok用法
检查是否可以动态生成get/set等方法
@Data //默认生成get/set/toString/hashcode…
@Accessors(chain=true) //开启链式加载
@NoArgsConstructor //无参构造
@AllArgsConstructor //全参构造
5.3 关于lombok面试题
- 需要在IDEA中安装对应的插件“红番茄”
- 添加jar包 之后通过注解进行调用!!!!
**问题:**项目将来都要部署到Linux系统中,是否需要安装插件??对java编译的规则是否清楚!!
**答案:**不需要安装
**原因:**lombok在编译期有效xxx.class(字节码文件)—xxx.jar
6. 关于MyBatis总结
6.1什么是MyBatis
MyBatis是持久化层的框架,与数据进行交互。MyBatis在内部封装了JDBC
MyBatis称之为半自动化的ORM映射框架
6.2 ORM思想
对象关系映射(英语:Object Relational Mapping,简称ORM),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转化。从效果上来说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。如今已有很多免费和付费的ORM产品,而有些程序更倾向于创建自己的ORM工具
**总结:**以面向对象的方式操作数据库
难点:
- 对象应该与表一对一映射
- 对象中属性应该与表中的字段一一映射
分类:
更新操作 手写SQL,参数一般采用对象的方式封装,之后通过#{属性}
**查询操作:**手写SQL 结果集自动的封装
**扩展:**user对象(…) userMapper.insert(user); 程序自动入库 配置繁琐
**思考:**为什么mybatis这么多年都没有实现全自动的orm呢?性能问题
**mybatis认为:**用户自己手写的SQL的执行效率是最高的,并且也更加的通用多表关联
7.动态代理机制
7.1 什么是动态代理
在不修改源码的条件下对方法进行扩展.
7.2 动态代理的方式
1. JDK动态代理
要求:
- 要求被代理者,必须实现接口.
- 代理对象根据接口的类型,通过反射机制创建出来一个实现类对象.(JDK源码底层实现的)
- Spring容器一般面对接口注入时 ,默认条件下采用JDK动态代理的方式实例化对象.
2.CGLIB动态代理
1.CGLIB是JDK代理的一种补充.
2.不管被代理者是否实现接口,都可以为其创建代理对象
3.代理对象是被代理者的子类.