前言

  • Spring Boot,本身我自己在暑假已经过了一次,但是在上学的时候很多时间都没有空做项目,其次是视频的教学内容也不是很详尽。

  • 所以就想着寒假在GitHub上找一份演示代码结合官方文档来写份Spring Boot的笔记,一方面是方便自己查漏补缺,另一方面想着开源这份笔记,方便后来人可以少走点弯路。


Spring项目配置管理


一、创建第一个Spring Boot项目

  • 在IDEA中继承了spring boot框架的搭建,具体的流程可以参考以下这篇文章

    参考文章在idea中创建一个SpringBoot项目


二、Spring Boot 目录结构

src/main/java: 主要包含项目的Java源代码文件,按照包的结构进行组织。

src/main/resources: 主要包含项目的配置文件和资源文件,按照资源的类型进行组织。

src/test/java: 包含项目的测试源代码文件,按照包的结构进行组织。

src/test/resources: 包含项目的测试配置文件和测试资源文件,按照资源的类型进行组织。

pom.xml: Maven项目的配置文件,包含了项目的依赖管理和构建配置。


三、项目前置依赖

前置Maven依赖介绍Spring Boot Configuration Processor

  • maven坐标

<!--maven坐标-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>
  • 作用:在我们构建了配置文件后,使用maven构建项目时,会在容器中找到使用了配置类注解的文件,生成一份根据配置类对象的Json文件。(我也不知道有什么作用)


四、项目文件结构

  • 在此演示中,我们将演示多配置切换,以及依赖注入注解使用。

文件结构说明:

#config文件夹:放配置类文件       
#controller文件夹:放演示配置注入文件    
#resources文件夹:放依赖配置文夹

五、对应配置文件编写

主配置文件:

server:
  port: 8081 #启动的端口号
  servlet:
    context-path: /demo #默认
spring:
  profiles:
    active: dev #引入的配置文件(姑且称之为子配置文件)

子配置文件-dev:

application:
  name: dev环境 @artifactId@
  version: dev环境 @version@
developer:
  name: dev环境 xkcoding
  website: dev环境 http://xkcoding.com
  qq: dev环境 237497819
  phone-number: dev环境 17326075631

子配置文件-prod:

application:
  name: prod环境 @artifactId@
  version: prod环境 @version@
developer:
  name: prod环境 xkcoding
  website: prod环境 http://xkcoding.com
  qq: prod环境 237497819
  phone-number: prod环境 17326075631

六、配置类文件编写

配置文件ApplicationProperty:

  • 注解方式: @Value("${配置文件名称.配置名称类}")

package com.xkcoding.properties.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
​
/**
 * 项目配置指代的是项目创建时的名称以及版本
 */
@Data
@Component
public class ApplicationProperty {
    @Value("${application.name}")
    private String name;
    @Value("${application.version}")
    private String version;
}
​

配置文件DeveloperProperty:

  • 注解方式:@ConfigurationProperties(prefix = "配置类的名称")

package com.xkcoding.properties.config;
​
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
​
/**
 * 开发人员配置信息对应的上面的developer配置信息
 */
@Data
@ConfigurationProperties(prefix = "developer")
@Component
public class DeveloperProperty {
    private String name;
    private String website;
    private String qq;
    private String phoneNumber;
}

Tips:对应的内容可以和第五的子配置文件对对,不难看出他们的对应关系。


七、演示注入信息文件编写

package com.xkcoding.properties.controller;
​
import cn.hutool.core.lang.Dict;
import com.xkcoding.properties.config.ApplicationProperty;
import com.xkcoding.properties.config.DeveloperProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
​
/**
 * 测试Controller
 */
@RestController
public class PropertyController {
    // 创建两个对应的配置类
    private final ApplicationProperty applicationProperty;
    private final DeveloperProperty developerProperty;
    
    // 重写一下此类的构造方法
    @Autowired
    public PropertyController(ApplicationProperty applicationProperty, DeveloperProperty developerProperty) {
        this.applicationProperty = applicationProperty;
        this.developerProperty = developerProperty;
    }
    
    // 写一个请求,并在请求中用创建字典,返回写入的两个配置类被注入的信息的json数据。
    @GetMapping("/property")
    public Dict index() {
        return Dict.create().set("applicationProperty", applicationProperty).set("developerProperty", developerProperty);
    }
}

查看注入信息链接:http://localhost:8081/demo/property

#返回json字符串信息
{
  "applicationProperty": {
    "name": "dev环境 demo-properties",
    "version": "dev环境 1.0.0-SNAPSHOT"
  },
  "developerProperty": {
    "name": "dev环境 xkcoding",
    "website": "dev环境 http://xkcoding.com",
    "qq": "dev环境 237497819",
    "phoneNumber": "dev环境 17326075631"
  }
}