前言
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"
}
}