黑马SpringBoot 基础篇12-28

喜欢ヅ旅行 2024-04-01 11:56 121阅读 0赞

1.复制模块:

简单来说,别人的工程,你想用,需要修改一些东西,才能用,按照以下步骤即可。

28048f9625194099ae7284b8f0d4d122.png

基础篇:属性配置方式

springboot默认配置文件是application.properties,在里面直接修改就行。

格式为key-value

  1. #修改服务器端口
  2. server.port=80

基础篇:基础配置

关闭运行日志图表

  1. spring.main.banner-mode=off

设置运行日志的显示级别

  1. logging.level.root=debug

还可以针对不同的包设置不同的日志级别:

  1. logging.level.com.itheima=info
  2. logging.level.com.timid=info

application.properties中可以配置很多属性,具体可见官方文档,

Common Application Properties
1ce8d51ab9a342c2adaeb5fb8f09a234.png

注意:SpringBoot中导入对应starter后,提供对应配置属性

基础篇:3种配置文件类型

1.application.properties(默认方式)

2.application.yml (主流方式/推荐方式)

3.application.yaml

  • application.properties(properties格式)

    server.port=80

  • application.yml(yml格式)

    server:
    port: 81

  • application.yaml(yaml格式)

    server:
    port: 82

配置文件加载优先级:yaml>yml>properties (验证方式:新建一个yaml文件和yml文件,三个文件同时配置server的port端口,分别设置为80、81、82,看哪个生效)

黑马视频中所讲的正好和我验证的相反,不知道为什么?

自动提示功能消失解决方案

在yaml中写配置,可能遇见没有自动提示,可用下面方法解决。

581d83bc52e146df9c0976644db73529.png

指定SpringBoot配置文件

  • Setting → Project Structure → Facets
  • 选中对应项目/工程
  • Customize Spring Boot
  • 选择配置文件

yaml 数据格式:

  1. 大小写敏感
  2. 属性层级关系使用多行描述,每行结尾使用冒号结束
  3. 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
  4. 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
  5. #号 表示注释

常见的数据书写格式

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可以读取单个数据,属性名引用方式:${一级属性名.二级属性名……}

8e5452abcda54a57a06f74f5b44f40b7.png

  1. @Value("${server.port}")
  2. private String port;

a327f91254974928b1c1669b679dabe8.png

7b8d723f3ace4c318f6d3b0aa6cf4d59.png

记得使用@Value注解时,要将该注入写在某一个指定的Spring管控的bean的属性名上方。现在就可以读取到对应的单一数据行了

自定义对象封装指定数据:

37b66eab982c40fd9aa08234a8c0c665.png

使用@ConfigurationProperties注解绑定配置信息到封装类中。

封装类需要定义为Spring管理的bean,否则无法进行属性注入

097019d9e6c64a0b897684ecada0c1ae.png

698fb36b702340b287cd44a53fa316e4.png

封装到Environment对象中:

SpringBoot提供了一个对象,能够把所有的数据都封装到这一个对象中,这个对象叫做Environment,使用自动装配注解可以将所有的yaml数据封装到这个对象中

5d41c7c546894f52b919a8307228f3a5.png

数据封装到了Environment对象中,获取属性时,通过Environment的接口操作进行,具体方法时getProperties(String),参数填写属性名即可

总结

  1. 使用Environment对象封装全部配置信息
  2. 使用@Autowired自动装配数据到Environment对象中

整合第三方技术:

整合Junit:

694ae03416154a06ae4c0757fe806684.png

1ec21117035d4acaa54e9ba8ec96ad15.png

如果不在启动类所在的包及其子包,那么在springTest里指定类也可以,下面两种写法等价:

  1. // 告诉spring 测试对象是谁
  2. @SpringBootTest(classes=BootJunitApplication.class)
  3. @SpringBootTest
  4. @ContextConfiguration(classes=BootJunitApplication.class)
  1. 测试类如果存在于引导类所在包或子包中无需指定引导类
  2. 测试类如果不存在于引导类所在的包或子包中需要通过classes属性指定引导类

整合Mybatis

所需的sql语句

  1. DROP TABLE IF EXISTS `tbl_book`;
  2. CREATE TABLE `tbl_book` (
  3. `id` int NOT NULL AUTO_INCREMENT,
  4. `name` varchar(50) ,
  5. `type` varchar(100) ,
  6. `description` varchar(100) ,
  7. PRIMARY KEY (`id`) USING BTREE
  8. );
  9. INSERT INTO `tbl_book` VALUES (1, '三体', '科幻', '大刘的巅峰之作,将中国科幻推向世界舞台。总共分为三部曲:《地球往事》、《黑暗森林》、《死神永生》。');
  10. INSERT INTO `tbl_book` VALUES (2, '格林童话', '童话', '睡前故事。');
  11. INSERT INTO `tbl_book` VALUES (3, 'Spring 5设计模式', '计算机理论', '深入Spring源码剖析Spring源码中蕴含的10大设计模式');
  12. INSERT INTO `tbl_book` VALUES (4, 'Spring MVC+ MyBatis开发从入门到项目实战', '计算机理论', '全方位解析面向Web应用的轻量级框架,带你成为Spring MVC开发高手');
  13. INSERT INTO `tbl_book` VALUES (5, '轻量级Java Web企业应用实战', '计算机理论', '源码级剖析Spring框架,适合已掌握Java基础的读者');
  14. INSERT INTO `tbl_book` VALUES (6, 'Java核心技术卷|基础知识(原书第11版)', '计算机理论', 'Core Java第11版,Jolt大奖获奖作品,针对Java SE9、10、 11全面更新');
  15. INSERT INTO `tbl_book` VALUES (7, '深入理解Java虚拟机', '计算机理论', '5个维度全面剖析JVM,面试知识点全覆盖');
  16. INSERT INTO `tbl_book` VALUES (8, 'Java编程思想(第4版)', '计算机理论', 'Java学习必读经典殿堂级著作!赢得了全球程序员的广泛赞誉');
  17. INSERT INTO `tbl_book` VALUES (9, '零基础学Java (全彩版)', '计算机理论', '零基础自学编程的入门]图书,由浅入深,详解Java语言的编程思想和核心技术');
  18. INSERT INTO `tbl_book` VALUES (10, '直播就该这么做:主播高效沟通实战指南', '市场营销', '李子柒、李佳琦、薇娅成长为网红的秘密都在书中');
  19. INSERT INTO `tbl_book` VALUES (11, '直播销讲实战一本通', '市场营销', '和秋叶一起学系列网络营销书籍');
  20. INSERT INTO `tbl_book` VALUES (12, '直播带货:淘宝、天猫直播从新手到高手', '市场营销', '一本教你如何玩转直播的书, 10堂课轻松实现带货月入3W+');
  21. INSERT INTO `tbl_book` VALUES (13, 'Spring实战第5版', '计算机理论', 'Spring入门经典教程,深入理解Spring原理技术内幕');
  22. INSERT INTO `tbl_book` VALUES (14, 'Spring 5核心原理与30个类手写实战', '计算机理论', '十年沉淀之作,写Spring精华思想');
  1. 创建新模块,选择springinitial,并配置相关模块信息

2.在application.yml 中写配置信息

  1. spring:
  2. datasource:
  3. driver-class-name: com.mysql.cj.jdbc.Driver
  4. url: jdbc:mysql://localhost:3306/boot_db?serverTimezone=UTC&useUnicode=true
  5. username: root
  6. password: root

在url后面要加上时区 ?serverTimezone=UTC&useUnicode=true

3.定义数据库接口与映射配置

  1. @Mapper
  2. public interface BookDao {
  3. @Select("select * from tbl_book where id=#{id}")
  4. public Book getById(Integer id);
  5. }

记得要添加@Mapper 被容器识别到

4.在测试类中注入dao配置,测试功能

  1. @SpringBootTest
  2. class BootMybatisApplicationTests {
  3. @Autowired
  4. private BookDao bookDao;
  5. @Test
  6. void contextLoads() {
  7. System.out.println(bookDao.getById(1));
  8. }
  9. }

整合Mybatis-Plus

1.导入对应的starter

  1. <dependency>
  2. <groupId>com.baomidou</groupId>
  3. <artifactId>mybatis-plus-boot-starter</artifactId>
  4. <version>3.4.3</version>
  5. </dependency>

2.配置数据源相关信息 和映射接口

  1. #2.配置相关信息
  2. spring:
  3. datasource:
  4. driver-class-name: com.mysql.cj.jdbc.Driver
  5. url: jdbc:mysql://localhost:3306/ssm_db
  6. username: root
  7. password: root
  8. @Mapper
  9. public interface BookDao extends BaseMapper<Book> {
  10. }

核心在于Dao接口继承了一个BaseMapper的接口,这个接口中帮助开发者预定了若干个常用的API接口,简化了通用API接口的开发工作。

1201b26489e9416587bbe521bb9729fc.png

因为数据库中表明为tbl_book,而实体类名为book,需要做一个配置, 添加如下配置即可,设置所有表名的通用前缀名

mybatis-plus:
global-config:
db-config:
table-prefix: tbl_ #设置所有表的通用前缀名称为tbl_

整合Druid:

  1. 导入对应的技术坐标(添加对应的依赖)


    com.alibaba
    druid
    1.2.14
  2. 配置使用指定的数据源类型

508c4599ad2a4962bea3cf68727798bc.png

总结

  1. 整合Druid需要导入Druid对应的starter
  2. 根据Druid提供的配置方式进行配置
  3. 整合第三方技术通用方式

    • 导入对应的starter
    • 根据提供的配置格式,配置非默认值对应的配置项

发表评论

表情:
评论列表 (有 0 条评论,121人围观)

还没有评论,来说两句吧...

相关阅读