1. SpringBoot高级用法
1.1 SpringBoot配置文件说明
1.1.1 关于配置文件说明
解释: Spring程序启动时,需要加载默认的配置文件, 默认名称:application.properties
1.1.2 修改字符集
说明: 下列操作修改的是IDEA中解析代码时的字符集格式.
1.1.3 properties配置文件说明
#语法
#1.数据结构 key-value结构
#2.写法 key=value “key2”=“value2”
#3.数据类型 properties的数据类型都是字符串 所以无需添加"号
#4.弊端 配置信息没有层级结构,必须写配置的全名
#5.程序通过IO流 进行pro文件的加载时 默认的字符集编码IS0-8859-1
1.1.4 YML配置文件说明
#关于YML配置文件说明
# 1.数据结构 key=value
# 2.数据类型 默认都是字符串 如果需要类型转化,则框架已经在内部完成
# 3.yml写法: 1.key: (空格)value 2.有层级结构 编辑时注意
# 4.字符集编码: 默认程序加载时都是UTF-8
server:
port: 8080
#项目发布的路径
servlet:
# /缺省值 localhost:8080/jt/xxxx请求路径
context-path: /
1.2 SpringBoot为属性赋值
1.2.1 业务说明
说明: 由于业务需要 某些属性信息,如果直接写死在代码中则后期的扩展性不好.所以需要动态赋值. 由于对象一般都是由Spring容器管理.所以该赋值的操作也应该由Spring容器赋值.
1.2.2 编辑YML配置文件
1.2.3 为属性赋值
1.3 利用properties为属性赋值
1.3.1 需求
说明: YML配置文件是Spring中的核心配置文件,其中包含了整合第三方框架的信息.
如果需要设定业务数据,一般采用properties的方式 进行管理.
1.3.2 编辑properties文件
1.3.3 实现属性赋值
1.3 SpringBoot环境切换
1.3.1 需求说明
开发时使用的环境称为开发环境,测试时应该使用测试环境.
开发环境: port: 8080 msg=“我喜欢开发”
测试环境: port 8090 msg=“我喜欢测试”
解决方案: 开始多环境测试
1.3.2 语法说明
要求: 不管是几个环境,要求配置项都必须相同,值可以不同
语法:
1.使用—实现YML配置文件的分割
2.定义环境名称
3.定义默认环境名称
#指定默认的环境
spring:
profiles:
active: test
---
#关于YML配置文件说明
# 1.数据结构 key=value
# 2.数据类型 默认都是字符串 如果需要类型转化,则框架已经在内部完成
# 3.yml写法: 1.key: (空格)value 2.有层级结构 编辑时注意
# 4.字符集编码: 默认程序加载时都是UTF-8
#定义环境名称
spring:
config:
activate:
on-profile: dev
server:
port: 8080
#项目发布的路径
servlet:
# /缺省值 localhost:8080/jt/xxxx请求路径
context-path: /
#2.为属性赋值 hello代表前缀 key=hello.msg
hello:
msg: "我喜欢开发"
#环境分割线
---
spring:
config:
activate:
on-profile: test
server:
port: 8090
#项目发布的路径
servlet:
# /缺省值 localhost:8080/jt/xxxx请求路径
context-path: /
#2.为属性赋值 hello代表前缀 key=hello.msg
hello:
msg: "我喜欢测试"
1.4 热部署
1.4.1 解释说明
说明: 热部署一般在开发阶段比较适用.但是在发布阶段一般会取消该功能.
作用: 当程序进行修改 一段时间之后,tomcat服务器会自动的重启.
缺点: eclipse中 兼容完美立即重启, IDEA 3-5秒之后完成重启.
1.4.2 添加jar包
说明: SpringBoot根据自身的规范,只需要导入jar包文件即可,无需过多的配置.
<!--支持热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
1.4.3 修改IDEA配置
组合键: ctrl + alt + shifr + /
效果:
勾选热部署 :
1.5 lombok插件
1.5.0 添加插件
1.5.1 添加jar包
<!--引入lombok包-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
1.5.2 lombok用法
检查是否可以动态生成get/set等方法
1.6 导入数据库
1.6.1 检查数据库是否可用
1.6.2 检查数据库服务项
说明: 有时启动计算机时可能出现异常情况,导致mysql 数据库服务不能正常启动. 展现的效果表示数据库链接异常.
检查: 检查mysql服务项 是否可用.
如果显示链接异常,则可能是服务没有启动导致的.
1.6.3 远程链接数据库
1).新建链接
2).远程链接数据库
3).数据库文件位置
4).数据库链接
2. SpringBoot整合Mybatis
2.1 创建项目
2.1.1 创建项目
2.1.2 编辑pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jt</groupId>
<artifactId>springboot_demo_2</artifactId>
<version>1.0-SNAPSHOT</version>
<!--1.parent标签作用
parent标签中规定了Springboot与其他框架整合时候所用到的jar包的版本
的定义!!!. 这些jar包的版本都是经过官方测试的.几乎不会出现版本冲突.
总结: 版本的定义!!!
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--jar包文件的依赖 如果需要某些功能,则使用依赖进行导入
按需导入.
大部分都进了定义,但是个别的需要手动导入(需要自定版本) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<!--
spring-boot-starter: springboot启动项
SpringBoot官网针对于该框架已经完成了"配置" 用户只需要简单的配置
既可以使用该功能.
-->
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--支持热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!--引入lombok包-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<!--maven通过插件对maven版本的springboot进行管理
体现: 项目打包/发布/测试等相关操作.
-->
<build>
<plugins>
<!--springboot专门为springboot的工程开发了一款项目管理插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.1.3 编辑主启动类
创建com.jt的包之后,编辑主启动类, 运行测试成功即可.
2.2编辑POJO对象
2.3 关于lombok面试题
- 需要在IDEA中安装对应的插件 “红番椒”
- 添加jar包 之后通过注解进行调用!!!
问题: 项目将来都要部署到Linux系统中. 是否需要安装插件??? 对java编译的规则是否清楚!!!
答案: 不需要安装
原因: lombok在编译期有效 xxx.java(源码) ----jvm-----xxxx.class(字节码文件) ----xxx.jar
2.4 关于Mybatis总结
2.4.1 什么是Mybatis
Mybatis是持久化层的框架,与数据库进行交互. Mybatis在内部封装了JDBC.
Mybatis称之为半自动化的ORM映射框架
2.4.2 ORM思想
对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。如今已有很多免费和付费的ORM产品,而有些程序员更倾向于创建自己的ORM工具。
总结: 以面向对象的方式操作数据库.
难点 : 1.对象应该与表一对一映射
2.对象中的属性应该与表中的字段一一映射.
分类:
1.更新操作 手写sql ,参数一般采用对象的方式封装 之后通过#{属性}
2.查询操作 手写sql, 结果集自动的封装
扩展: user对象(…) userMapper.insert(user); 程序自动入库 配置繁琐
思考: 为什么mybatis 这么多年都没有实现全自动化的orm呢? 性能问题
Mybatis认为: 用户自己手写的Sql的执行效率是最高的. 并且也更加的通用 多表关联.
2.5 SpringBoot整合Mybatis
2.5.1 导入jar包
<!--引入数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--springBoot数据库连接 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--spring整合mybatis 暂时 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
2.5.2 数据源相关说明
spring:
datasource:
# 自动匹配驱动的版本
url: jdbc:mysql://127.0.0.1:3306/jt?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
1.serverTimezone=GMT%2B8& GMT+8
2.useUnicode=true&characterEncoding=utf8 是否使用useUnicode编码,字符的编码格式采用u8格式
3.autoReconnect=true 如果程序链接过程中jdbc链接中断 ,是否重连
4.allowMultiQueries=true 是否允许批量执行
2.5.3 SpringBoot整合Mybatis
#Mybatis整合
mybatis:
#定义别名包
type-aliases-package: com.jt.pojo
#加载mapper的映射文件
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
2.5.4 编辑Mapper接口/映射文件
1).编辑mapper接口
2).编辑xml映射文件
2.5.5 编辑测试类
2.6 动态代理机制
2.6.1 什么是动态代理
在不修改源码的条件下对方法进行扩展.
2.6.2 动态代理的方式
1.JDK动态代理
要求:
1.要求被代理者,必须实现接口.
2.代理对象根据接口的类型,通过反射机制创建出来一个实现类对象.(JDK源码底层实现的)
3.Spring容器一般面对接口注入时 ,默认条件下采用JDK动态代理的方式实例化对象.
2.CGLIB动态代理
1.CGLIB是JDK代理的一种补充.
2.不管被代理者是否实现接口,都可以为其创建代理对象
3.代理对象是被代理者的子类.