SpringBoot项目的parent依赖和配置文件*.properties*.yml详解

Posted liduchang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot项目的parent依赖和配置文件*.properties*.yml详解相关的知识,希望对你有一定的参考价值。

1.idea创建SpringBoot项目

  • idea创建SpringBoot项目应该对很多人来说已经是菜到不能到菜的操作了,但是对于初学者小白来说,还是要讲解一下的。打开idea,然后选择Spring Initializr直接点击next,这里需要说一下的是这个界面上有一个http://start.spring.io链接,这个链接就是SpringBoot的官网链接,大家可以到SpringBoot官网创建项目然后导入到idea中,这个操作就自行百度了,我想直接可以在idea中操作,为什么还要到官网上呢?可能太闲了吧
    技术图片在这里插入图片描述
  • 然后就是填写相关的信息,包括:
  • Group(组织名)
  • Artifact(为项目名称,即项目对唯一标识符)
  • Packaging:jar(打包方式)
  • Package(包名)
  • Java Version(java版本名)
    然后点击next,进入下一步
    技术图片在这里插入图片描述
  • 然后在这里选择你需要的依赖的模块,然后点击next
    技术图片在这里插入图片描述
  • 最后选择你的项目在本地的位置,点击完成
    技术图片在这里插入图片描述

2.SpringBoot项目的parent

  • 最后创建的SpringBoot的项目结构如下,打开pom文件
  • 这里定义了一个SpringBoot项目的父级项目依赖
  • 按住Ctrl键配合鼠标的左键点击进去
    技术图片在这里插入图片描述
  • 进去后重要的看红框里面的,这里又定义了一个parent父级,为spring-boot-dependencies,从名字上就大概能看出这是SpringBoot的依赖管理

然后第二个红框内所说明的内容大概如下:

  1. 定义了java的编译版本为1.8
  2. 使用UTF-8格式编码
  3. 打包操作的时候的配置
  4. 然后就是红框下面的就是插件的配置,和资源的过滤
    技术图片在这里插入图片描述
    然后Ctrl+鼠标左键点击spring-boot-dependencies,如图
  5. 这里就是SpringBoot的依赖和依赖版本的管理,可以看到一堆的版本号
  6. 主要使用的是properties和dependencyManagement来进行版本号和依赖的管理,这既是为什么我们在SpringBoot项目引入大部分的依赖时不用写版本号,因为这是maven的依赖传递的关系,父级已经帮你定义好了版本号了
  7. 另外我们也可以使用properties和dependencyManagement在我们自己的项目中自定义自己的版本号,不使用父级帮我们提供的版本号,参考如下:
<dependencyManagement>
 <dependencies>
    <dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-releasetrain</artifactId>
    <version>Fowler-SR2</version>
    <type>pom</type>
    <scope>import</scope>
  </dependency> 
  <dependency>
    <!-- Import dependency management from Spring Boot -->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.1.2.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
  </dependency>
 </dependencies>
</dependencyManagement>

技术图片在这里插入图片描述

3.SpringBoot的配置文件

在SpringBoot项目中的配置文件的格式有两种properties和yml,文件的位置如下(优先级由高到低,这里解释一下优先级的意思就是,在项目加载jvm的时候会优先加载哪个位置的配置文件):

  • 当前项目根目录下的 config 目录下
  • 当前项目的根目录下
  • resources 目录下的 config 目录下
  • resources 目录下
    技术图片在这里插入图片描述
  • 另外除了SpringBoot给我们默认配的配置文件的位置,我们也可以自己指定配置文件的位置。如图所示,即为在项目的resources目录下创建一个myconfig目录,然后把application.properties文件放在这个目录下
    技术图片在这里插入图片描述
  • 另外我们也可以在启动项目的时候,指定配置文件的位置,这个的操作主要针对于已经打包好的项目,无法修改配置文件了
java -jar demo.jar --spring.config.location=classpath:/myconfig/

最后是修改application.properties/application.yml配置文件的名字,因为我们的默认配置文件的名字也可以不叫作这个默认的名字,例如修改为myconfig.properties/myconfig.yml.如图,在启动项目的时候通过spring.config.name=myconfig来指定配置文件的名字

技术图片在这里插入图片描述
另外在已经打包好的项目的时候也可以通过下面的启动命令来指定配置文件的名字

 

java -jar demo.jar --spring.config.name=myconfig

最后可以同时执行多条命令,如下:

java -jar demo.jar --spring,config.name=myconfig;spring.config.location=classpath:/myconfig/

3.SpringBoot的配置文件语法

  • properties的语法
    properties的语法是基于key和value形式的,键与值之间通过等号连接,例如:
person.name=李依依
person.age=18
  • properties中值的注入,通过@Value注解注入值,注意也要加上@Component注解将对象交给Spring容器管理
@Component
public class Person{
    @Value("${person.name}")
    private String name;
    @Value("${person.age}")
    private Integer age;
    //省略getter/setter
}
  • 类型安全的属性注入,另外SpringBoot提供了另一种注入的方式,主要解决要注入很多属性的时候,要写很多次的@Value
@Component
@PropertySource("classpath:person.properties")
@ConfigurationProperties(prefix = "person")
public class Book {
    private String name;
    private Integer age;
    //省略getter/setter
}
  • yml的语法
    相对比properties的语法yml的语法简洁明了,主次分明,语法如下:yml是以:分割的。
    数组的值的注入:
type:
    color:
        - white
        - black

这段数据绑定到一个bean对象中,如下代码:

@ConfigurationProperties(prefix="type")
@Component
public class Config{
    private List<String> color = new ArrayList<String>()
    public List<String> getColor(){
        return this.color
    }
}

当yml配置文件中取单个值的时候,如下

type:
    color:white

取值

@Value("${type.color}")
private String color

更多的教程请关注:非科班的科班,若是觉得教程对你有帮助的请点个赞,谢谢

以上是关于SpringBoot项目的parent依赖和配置文件*.properties*.yml详解的主要内容,如果未能解决你的问题,请参考以下文章

springboot项目如何不依赖spring-boot-parent

Springboot项目固化依赖的那点事

SpringBoot 集成积木报表

springboot项目不适用parent依赖,导致maven依赖无效

SpringBoot快速搭建流程

springboot依赖管理和自动配置源码分析