重学SpringBoot

什么是SpringBoot SpringBoot是一款有助于开发的框架,它的设计目的就是为了用来简化Spring应用的初始搭建和开发过程 其核心运行和pom.xml和Application类 Spring和SpringBoot二者相比来说,SpringBoot开发更加方便,体现在: pom配置,直接

什么是SpringBoot

SpringBoot是一款有助于开发的框架,它的设计目的就是为了用来简化Spring应用的初始搭建开发过程

其核心运行和pom.xml和Application类

Spring和SpringBoot二者相比来说,SpringBoot开发更加方便,体现在:

  • pom配置,直接勾选添加

  • pom版本自动组合最优兼容,在parent,在parent中直接规定好了不同版本的SpringBoot最优搭配

  • 没有繁琐配置类,例如config

  • 内置服务器:内嵌tomcat是吧tomcat服务器变成对象的过程,然后将对象给spring容器的过程

  • starter:包含了多个依赖的信息,减少了依赖配置

  • 引导类:Application就是bean容器,核心就是@SpringBootApplication注解

注意事项:开发SpringBoot程序需要在联网的环境下进行,因为默认是就是去官网创建工程

如果创建失败也可以去官网创建,会得到压缩包可以导入工程

如果还是创建失败,可以使用阿里云,将默认设置为http://start.aliyun.com

小技巧:隐藏文件

搜索FIle Types

选择Ignored Files and Folders,就可以添加过滤类别了,比如一些帮助文档,或者不想看的文件就可以隐藏

小技巧:比较文件

compare files

SpringBoot配置文件

知识点:

SpringBoot默认配置文件

application.Properties,写的格式为键值对

比如默认端口是8080,要想更改端口,就是用server.port=80

关闭运行日志图标banner

spring.main.banner-mode=off

设置日志相关

logging.level.root=debug

SpringBoot主流的配置文件格式 yml和yaml 都是一样的格式

server:
 port: 80

如果多个文件同时出现的优先级是:Properties>yml>yaml

主流的格式是.yml

语法规则:

大小写敏感

缩进表示层级关系

属性值前面加空格(重要)

YAML 语法规则笔记

一、字面值表示方式

  • boolean:TRUE、true、True、FALSE、false、False 均可,如 boolean: TRUE

  • float:支持科学计数法,如 float: 3.14float: 6.8523015e+5

  • int:支持二进制、八进制、十六进制,如 int: 123int: 0b1010_0111_0100_1010_1110

  • null:用 ~ 表示,如 null: ~

  • string:可直接书写(如 string: Helloworld ),含特殊字符可用双引号包裹(如 string2: "Hello World"

  • date:需用 yyyy - MM - dd 格式,如 date: 2018-02-17

  • datetime:时间和日期用 T 连接,最后 + 表时区,如 datetime: 2018-02-17T15:02:31+08:00

二、数组表示方式

  • 基本格式:在属性名下方,用减号(- )作数据开始符,每行一个数据,减号与数据间空格分隔,如:

yaml

subject:
  - Java
  - 前端
  - 大数据



  • 嵌套格式(对象数组 ):

  • 格式一:

yaml

users:
  - name: Tom
    age: 4
  - name: Jerry
    age: 5



  • 格式二(更紧凑 ):

yaml

users:
  - 
    name: Tom
    age: 4
  - 
    name: Jerry
    age: 5
  • 缩略格式:users2: [ { name:Tom , age:4 } , { name:Jerry , age:5 } ]

  • 缩略写法:可直接在一行用 [ ] 列举,如 likes: [王者荣耀,刺激战场] ,与多行带减号写法等效

读取yml数据

简单类型

@Value("${country}")
private String country;

一、YAML 数据读取方式

(一)通过 Environment 对象读取

  1. 原理:Spring Boot 会将 YAML 配置数据封装到 Environment 对象中,可通过注入 Environment 来获取配置值。

  2. 示例

  • YAML 配置(application.yml)

yaml

lesson: SpringBoot
server:
  port: 82
enterprise:
  name: itcast
  age: 16
  tel: 4006184000
  subject:
    - Java
    - 前端
    - 大数据
  • Java 代码(Controller)

java

@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    private Environment env;

    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id) {
        System.out.println(env.getProperty("lesson"));
        System.out.println(env.getProperty("enterprise.name"));
        System.out.println(env.getProperty("enterprise.subject[0]"));
        return "hello, spring boot!";
    }
}

  • 说明:通过 env.getProperty("key") 形式,依据 YAML 的层级结构(用 . 分隔)获取对应配置值,数组元素用 [索引] 访问 。

(二)自定义对象封装指定数据

  1. 原理:利用 @ConfigurationProperties 注解,将 YAML 中指定前缀的配置映射到自定义 Java 对象的属性上,实现配置与对象的绑定。

  2. 示例

  • YAML 配置(以 enterprise 为例,延续上面的配置结构 )

yaml

enterprise:
  name: itcast
  age: 16
  tel: 4006184000
  subject:
    - Java
    - 前端
    - 大数据
  • 自定义对象(Enterprise 类)

java

@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
    private String name;
    private Integer age;
    private String[] subject;

    // 省略 getter 和 setter 方法
}
  • 在 Controller 中使用

java

@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    private Enterprise enterprise;

    // 可通过 enterprise 对象获取对应配置值,进行业务逻辑处理
}
  • 另一个数据源配置示例(datasource)

  • YAML 配置

yaml

datasource:
  driver-class-name: com.mysql.cj.jdbc.Driver
  url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
  username: root
  password: root
  • 自定义对象(DataSource 类)

java

@Component
@ConfigurationProperties(prefix = "datasource")
public class DataSource {
    private String driverClassName;
    private String url;
    private String userName;
    private String password;

    // 省略 getter 和 setter 方法
}



  • 说明@Component 使对象成为 Spring 组件,被容器管理;@ConfigurationProperties(prefix = "xxx") 指定 YAML 中配置的前缀,对象属性名要与 YAML 配置项名(驼峰和短横线风格可自动映射,如 driver-class-name 对应 driverClassName )一致,方便批量、结构化获取配置 。

二、两种方式对比与适用场景

方式

优点

缺点

适用场景

Environment 对象读取

灵活,可随时获取任意配置值,无需提前定义对象

配置零散时,多次获取值代码繁琐;对于复杂对象结构,解析麻烦

临时获取个别配置值,或配置结构简单、无固定对象映射需求场景

自定义对象封装

结构化、面向对象,代码可读性高,适合复杂配置映射;方便进行配置校验、初始化等操作

需额外定义对象类,有一定代码量;若配置变动,可能需修改对象类

配置项多且需复用、有固定业务对象与之对应(如数据源配置、企业信息配置等)场景



通过这两种 YAML 数据读取方式,能高效在 Spring Boot 应用中获取配置,助力实现灵活的配置管理与业务逻辑开发 。

整合第三方技术

junit

@ Repository是写在持久层的注解

junit在SpringBoot自动整合,无需新加依赖,测试类的上方有@ SpringBootTest注解,被此注解标注的类为测试类

测试类必须放在与容器类所在包的相同包或者子包下,否则会报错识别不到,可以使用标注classes=(SpringBootApplication.class)来扫描的到

LICENSED UNDER CC BY-NC-SA 4.0
评论