1.复制模块:
简单来说,别人的工程,你想用,需要修改一些东西,才能用,按照以下步骤即可。
基础篇:属性配置方式
springboot默认配置文件是application.properties,在里面直接修改就行。
格式为key-value
#修改服务器端口
server.port=80
基础篇:基础配置
关闭运行日志图表
spring.main.banner-mode=off
设置运行日志的显示级别
logging.level.root=debug
还可以针对不同的包设置不同的日志级别:
logging.level.com.itheima=info
logging.level.com.timid=info
application.properties中可以配置很多属性,具体可见官方文档,
Common Application Properties
注意:SpringBoot中导入对应starter后,提供对应配置属性
基础篇:3种配置文件类型
1.application.properties(默认方式)
2.application.yml (主流方式/推荐方式)
3.application.yaml
server.port=80
server:
port: 81
server:
port: 82
配置文件加载优先级:yaml>yml>properties (验证方式:新建一个yaml文件和yml文件,三个文件同时配置server的port端口,分别设置为80、81、82,看哪个生效)
黑马视频中所讲的正好和我验证的相反,不知道为什么?
自动提示功能消失解决方案
在yaml中写配置,可能遇见没有自动提示,可用下面方法解决。
指定SpringBoot配置文件
yaml 数据格式:
-
大小写敏感
-
属性层级关系使用多行描述,每行结尾使用冒号结束
-
使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
-
属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
-
#号 表示注释
常见的数据书写格式
boolean: TRUE #TRUE,true,True,FALSE,false,False均可
float: 3.14 #6.8523015e+5 #支持科学计数法
int: 123 #0b1010_0111_0100_1010_1110 #支持二进制、八进制、十六进制
null: ~ #使用~表示null
string: HelloWorld #字符串可以直接书写
string2: "Hello World" #可以使用双引号包裹特殊字符
date: 2018-02-17 #日期必须使用yyyy-MM-dd格式
datetime: 2018-02-17T15:02:31+08:00 #时间和日期之间使用T连接,最后使用+代表时区
数组表示方法:在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔
subject:
- Java
- 前端
- 大数据
enterprise:
name: itcast
age: 16
subject:
- Java
- 前端
- 大数据
likes: [王者荣耀,刺激战场] #数组书写缩略格式
users: #对象数组格式一
- name: Tom
age: 4
- name: Jerry
age: 5
users: #对象数组格式二
-
name: Tom
age: 4
-
name: Jerry
age: 5
users2: [ { name:Tom , age:4 } , { name:Jerry , age:5 } ] #对象数组缩略格式
yaml中保存的单个数据,可以使用Spring中的注解直接读取,使用@Value可以读取单个数据,属性名引用方式:${一级属性名.二级属性名……}
@Value("${server.port}")
private String port;
记得使用@Value注解时,要将该注入写在某一个指定的Spring管控的bean的属性名上方。现在就可以读取到对应的单一数据行了
自定义对象封装指定数据:
使用@ConfigurationProperties注解绑定配置信息到封装类中。
封装类需要定义为Spring管理的bean,否则无法进行属性注入
封装到Environment对象中:
SpringBoot提供了一个对象,能够把所有的数据都封装到这一个对象中,这个对象叫做Environment,使用自动装配注解可以将所有的yaml数据封装到这个对象中
数据封装到了Environment对象中,获取属性时,通过Environment的接口操作进行,具体方法时getProperties(String),参数填写属性名即可
总结
-
使用Environment对象封装全部配置信息
-
使用@Autowired自动装配数据到Environment对象中
整合第三方技术:
整合Junit:
如果不在启动类所在的包及其子包,那么在springTest里指定类也可以,下面两种写法等价:
// 告诉spring 测试对象是谁
@SpringBootTest(classes=BootJunitApplication.class)
@SpringBootTest
@ContextConfiguration(classes=BootJunitApplication.class)
-
测试类如果存在于引导类所在包或子包中无需指定引导类
-
测试类如果不存在于引导类所在的包或子包中需要通过classes属性指定引导类
整合Mybatis
所需的sql语句
DROP TABLE IF EXISTS `tbl_book`;
CREATE TABLE `tbl_book` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(50) ,
`type` varchar(100) ,
`description` varchar(100) ,
PRIMARY KEY (`id`) USING BTREE
);
INSERT INTO `tbl_book` VALUES (1, '三体', '科幻', '大刘的巅峰之作,将中国科幻推向世界舞台。总共分为三部曲:《地球往事》、《黑暗森林》、《死神永生》。');
INSERT INTO `tbl_book` VALUES (2, '格林童话', '童话', '睡前故事。');
INSERT INTO `tbl_book` VALUES (3, 'Spring 5设计模式', '计算机理论', '深入Spring源码剖析Spring源码中蕴含的10大设计模式');
INSERT INTO `tbl_book` VALUES (4, 'Spring MVC+ MyBatis开发从入门到项目实战', '计算机理论', '全方位解析面向Web应用的轻量级框架,带你成为Spring MVC开发高手');
INSERT INTO `tbl_book` VALUES (5, '轻量级Java Web企业应用实战', '计算机理论', '源码级剖析Spring框架,适合已掌握Java基础的读者');
INSERT INTO `tbl_book` VALUES (6, 'Java核心技术卷|基础知识(原书第11版)', '计算机理论', 'Core Java第11版,Jolt大奖获奖作品,针对Java SE9、10、 11全面更新');
INSERT INTO `tbl_book` VALUES (7, '深入理解Java虚拟机', '计算机理论', '5个维度全面剖析JVM,面试知识点全覆盖');
INSERT INTO `tbl_book` VALUES (8, 'Java编程思想(第4版)', '计算机理论', 'Java学习必读经典殿堂级著作!赢得了全球程序员的广泛赞誉');
INSERT INTO `tbl_book` VALUES (9, '零基础学Java (全彩版)', '计算机理论', '零基础自学编程的入门]图书,由浅入深,详解Java语言的编程思想和核心技术');
INSERT INTO `tbl_book` VALUES (10, '直播就该这么做:主播高效沟通实战指南', '市场营销', '李子柒、李佳琦、薇娅成长为网红的秘密都在书中');
INSERT INTO `tbl_book` VALUES (11, '直播销讲实战一本通', '市场营销', '和秋叶一起学系列网络营销书籍');
INSERT INTO `tbl_book` VALUES (12, '直播带货:淘宝、天猫直播从新手到高手', '市场营销', '一本教你如何玩转直播的书, 10堂课轻松实现带货月入3W+');
INSERT INTO `tbl_book` VALUES (13, 'Spring实战第5版', '计算机理论', 'Spring入门经典教程,深入理解Spring原理技术内幕');
INSERT INTO `tbl_book` VALUES (14, 'Spring 5核心原理与30个类手写实战', '计算机理论', '十年沉淀之作,写Spring精华思想');
1. 创建新模块,选择springinitial,并配置相关模块信息
2.在application.yml 中写配置信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/boot_db?serverTimezone=UTC&useUnicode=true
username: root
password: root
在url后面要加上时区 ?serverTimezone=UTC&useUnicode=true
3.定义数据库接口与映射配置
@Mapper
public interface BookDao {
@Select("select * from tbl_book where id=#{id}")
public Book getById(Integer id);
}
记得要添加@Mapper 被容器识别到
4.在测试类中注入dao配置,测试功能
@SpringBootTest
class BootMybatisApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
System.out.println(bookDao.getById(1));
}
}
整合Mybatis-Plus
1.导入对应的starter
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
2.配置数据源相关信息 和映射接口
#2.配置相关信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db
username: root
password: root
@Mapper
public interface BookDao extends BaseMapper<Book> {
}
核心在于Dao接口继承了一个BaseMapper的接口,这个接口中帮助开发者预定了若干个常用的API接口,简化了通用API接口的开发工作。
因为数据库中表明为tbl_book,而实体类名为book,需要做一个配置, 添加如下配置即可,设置所有表名的通用前缀名
mybatis-plus:
global-config:
db-config:
table-prefix: tbl_ #设置所有表的通用前缀名称为tbl_
整合Druid:
-
导入对应的技术坐标(添加对应的依赖)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.14</version>
</dependency>
2. 配置使用指定的数据源类型
总结
-
整合Druid需要导入Druid对应的starter
-
根据Druid提供的配置方式进行配置
-
整合第三方技术通用方式
-
导入对应的starter
-
根据提供的配置格式,配置非默认值对应的配置项