1. SpringBoot使用注意事项
1.1 关于Build标签说明
如果没有build 标签不影响编译运行,在项目发布部署时会报错;
如果没有build标签则项目打包之后不能正常执行.报错如下:
1.2 关于主启动类说明
1.2.1 关于元注解的说明
@Target(ElementType.TYPE) 该注解对类有效
@Retention(RetentionPolicy.RUNTIME) 该注解在运行期有效
@Documented 生成源码时 是否动态生成注释文档
@Inherited 标识注解是否可以被继承
1.2.2 @ComponentScan说明
说明: 当springBoot启动时,会实例化很多的对象,但是需要排除特定的类型
原因: SpringBoot内部兼容了很多的第三方框架,但是其中个别加入之后会影响整个代码流程,所以通过这样的方式将个别的类排除在外.
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
1.2.3 @SpringBootConfiguration注解说明
关键词: 配置文件/配置类 作用:整合第三方框架(配置)
@Configuration: 该注解一般标识类文件,告知springBoot程序 这个类是用来整合第三方框架/配置的.
说明2: @SpringBootConfiguration修饰主启动类,说明主启动类也是一个配置类.
说明3: SpringBoot主启动类会扫描用户自己的配置类,并且实例化对象.
1.2.3 @EnableAutoConfiguration注解说明
说明: 自动化的配置如图所示:
1.2.3.1@AutoConfigurationPackage说明
该注解表示自动配置的包扫描的路径.
工作原理: 该注解会动态的获取主启动类当前的包路径.之后开启包扫描的机制.
知识点: 以后写代码都应该在主启动类的同包及子包中.
1.2.3.2@Import(AutoConfigurationImportSelector.class)
知识回顾: SpringBoot使用体现了"开箱即用"的思想,用户引入jar包之后 可以直接使用(少量配置).
思考: dependencies代表程序的依赖项,(将其他的包加载到自己的项目中), 只是加载不负责执行.
1.2.3.3流程说明(重点!!!)
当SpringBoot主启动项执行时,内部会加载@Import(AutoConfigurationImportSelector.class),
该注解的作用就是根据依赖信息,根据SpringBoot内部的配置信息,依次加载执行.
当匹配了用户添加的启动器之后,程序负责实例化框架(执行jar包中的内容).
如果匹配不到,则继续向下执行.最终SpringBoot程序加载成功.
1.2.4 主启动类注解结构图
1.2.5 关于依赖考题
问题: 用户暂时不需要数据库的配置. 问:能否先行添加数据源的启动项?? (不添加任何注解!!!)
答案: 不可以,因为启动项执行需要完整配置,数据源信息并未添加.导致报错.
总结: SpringBoot项目中的依赖包尤其启动项,添加时慎重. 如果需要添加启动器,则必须保证配置完整.否则程序启动必然失败!!!.
2. SpringBoot高级用法
2.1 属性赋值
2.1.1 @Value为属性赋
YML配置信息
# SpringBoot启动时 默认加载yml文件
msg:
hello: "今天下雨,记得带伞~~"
动态赋值:
2.2 properties文件为属性赋值
2.2.1 业务说明
业务有时会需要动态赋值,如果将大量的业务数据写到yml文件中 导致代码混乱.最好的方式应该指定properties文件 为业务赋值.
2.2.2 编辑properties文件
#语法:
#数据结构: key=value
#注意事项: 不要添加""号 本身就是字符串.
#字符集编码: 写法采用utf-8,程序读取时采用ISO-8859-1
pro.msg=配置信息
2.2.3 动态为属性赋值
2.2 环境切换
要求: 不管是几个环境,要求配置项都必须相同,值可以不同
语法:
1.使用—实现YML配置文件的分割
2.定义环境名称
3.定义默认环境名称
2.3 热部署
2.3.1 添加依赖
<!--支持热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
2.3.2 配置IDEA环境
快捷键: ctrl + shift +alt + / 或者 ctrl + alt + a
2.4 Lombok插件安装
2.4.1 插件安装
2.4.2 添加jar包
<!--引入插件lombok 自动的set/get/构造方法插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2.4.3 lombok作用
动态生成常见 get/set/toString等方法
2.4.4 lombok知识点
问题: lombok使用需要提前安装lombok插件!!, 如果项目发布在Linux系统中.问: 系统是否需要提前安装插件?
答案: 不要 因为lombok插件在编译期有效!!!
xxx.java文件编译为xxx.class文件.
知识衍生: 写的是java源码, 运行的是编译后的.class
2.5 SpringBoot测试类用法
2.5.1 业务说明
说明:有时由于业务需要,需要进行单元测试, 单元测试中的对象可能会依赖Spring容器.
需求: 需要Spring容器管理一个User对象. id=101 name=“好好学习”
分析: 难点: 定制化属性内容!!! 具体业务功能. 利用配置类实现!!!
2.5.2 编辑配置类
2.5.3 Spring对象注入原理
1.根据对象类型进行注入
2.5.4 编辑测试类
3 作业
- 新创建一个项目 demo2_mybatis 要求实现SpringBoot整合Mybatis
- 难点1. 引入jar包
- 难点2. 编辑YML配置文件 整合数据源 整合mybais
- 要求: 通过测试类 完成CURD操作 库和表使用之前项目的