博客
关于我
springboot中pom.xml、application.yml、application.properties
阅读量:795 次
发布时间:2023-02-26

本文共 3645 字,大约阅读时间需要 12 分钟。

Spring Boot 应用程序配置详解

1. 读取资源文件配置

在Spring Boot项目中,资源文件是项目运行所需的重要组成部分。默认情况下,Maven会将资源文件按标准目录结构处理:

  • src/main/javasrc/test/java:这些目录下的*.java文件会分别在compile和test-compile阶段处理,编译结果分别存放在target/classestarget/test-classes中。
  • src/main/resourcessrc/test/resources:这些目录下的文件会被复制到target/classestarget/test-classes中。
  • target/classes:打包插件会将这个目录中的所有内容打包到JAR或WAR文件中。

资源文件的配置主要通过Pom.xml文件完成,有时需要自定义配置以满足项目需求。

2. Maven资源文件插件配置

为了更好地处理资源文件,Maven提供了maven-resources-plugin插件。以下是常见的配置方式:

org.apache.maven.plugins
maven-resources-plugin
2.6
${}
false

通过上述配置,可以实现对资源文件的自定义处理,例如文件类型、目录位置等。

3. application.yaml读取问题及解决方法

在某些情况下,application.yaml文件无法直接读取Pom.xml中的配置值,可能会抛出以下错误:

Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token found character '@' that cannot start any token. (Do not use @ for indentation)

解决方法是将application.yaml文件的相关配置添加到Pom.xml中,确保资源文件被正确处理:

src/main/resources
**/*.properties
**/*.xml
false
src/main/java
**/*.properties
**/*.xml
false

同时,确保在模块Pom.xml中添加maven-resources-plugin插件:

org.springframework.boot
spring-boot-maven-plugin

4. application.properties配置与使用

4.1 自定义属性支持

在application.properties文件中,可以定义自定义属性,并通过注解在代码中使用:

com.dudu.name=嘟嘟MD
com.dudu.want=祝大家鸡年大吉吧
@RestController
public class UserController {
@Value("${com.dudu.name}")
private String name;
@Value("${com.dudu.want}")
private String want;
@RequestMapping("/")
public String hexo() {
return name + "," + want;
}
}

4.2 自定义配置文件

可以在项目根目录下创建名为test.properties的文件,用于存储自定义配置:

com.md.name=哟西~
com.md.want=祝大家鸡年,大吉吧

定义对应的Bean类:

@Configuration
@PropertySource("classpath:test.properties")
public class ConfigTestBean {
private String name;
private String want;
}

4.3 随机值配置

在application.properties中可以使用${random}生成随机值:

dudu.secret=${random.value}
dudu.number=${random.int}

4.4 外部配置-命令行参数

通过命令行参数可以实时修改配置:

java -jar xx.jar --server.port=9090

Spring Boot支持多种属性源,包括:

  • 开发工具全局属性文件(~/.spring-boot-devtools.properties
  • 测试中的@TestPropertySource
  • 测试中的@SpringBootTest#properties
  • 命令行参数
  • 环境变量
  • JVM系统属性
  • 操作系统环境变量
  • 随机生成属性(如${random.value}
  • 外部的application.properties或application.yml文件
  • 打包在应用程序内的配置文件
  • @PropertySource标注的属性源

5. 配置文件的优先级

application.properties和application.yml文件可以放在以下位置:

  • 配置目录(/config)下的文件
  • 项目运行目录下的文件
  • config包下的文件
  • Classpath根目录下的文件
  • 优先级从高到低为:外置配置文件 > 内置配置文件 > Classpath配置文件。

    6. Profile多环境配置

    Spring Boot支持通过Profile标注来实现多环境配置。例如,定义以下Profile文件:

    • application-dev.properties:开发环境配置
    • application-prod.properties:生产环境配置

    通过在application.properties中设置spring.profiles.active属性,可以激活对应的Profile:

    spring.profiles.active=dev

    或者在命令行启动时指定:

    java -jar xxx.jar --spring.profiles.active=dev

    此外,可以通过@Profile注解定义环境相关的Bean类:

    @Component
    @Profile("testdb")
    public class TestDBConnector {
    public void configure() {
    System.out.println("testdb");
    }
    }
    @Component
    @Profile("devdb")
    public class DevDBConnector {
    public void configure() {
    System.out.println("devdb");
    }
    }

    通过设置spring.profiles.active=testdb,可以选择使用对应的数据库配置。

    7. 总结

    以上内容涵盖了Spring Boot应用程序的主要配置方法,包括资源文件处理、自定义属性配置、随机值生成、外部配置以及多环境支持等。通过合理配置,开发者可以更高效地管理Spring Boot应用程序的运行环境和功能模块。

    转载地址:http://sjvfk.baihongyu.com/

    你可能感兴趣的文章
    opencv&Python——多种边缘检测
    查看>>
    OpenCV-Python接口、cv和cv2的性能比较
    查看>>
    opencv26-模板匹配
    查看>>
    opencv32-基于距离变换和分水岭的图像分割
    查看>>
    opencv5-图像混合
    查看>>
    opencv9-膨胀和腐蚀
    查看>>
    OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
    查看>>
    OpenCV与AI深度学习 | 使用Python和OpenCV实现火焰检测(附源码)
    查看>>
    OpenCV与AI深度学习 | 使用YOLO11实现区域内目标跟踪
    查看>>
    OpenCV与AI深度学习 | 使用YOLOv8做目标检测、实例分割和图像分类(包含实例操作代码)
    查看>>
    OpenCV与AI深度学习 | 基于GAN的零缺陷样本产品表面缺陷检测
    查看>>
    OpenCV与AI深度学习 | 基于OpenCV和深度学习预测年龄和性别
    查看>>
    OpenCV与AI深度学习 | 基于Python和OpenCV将图像转为ASCII艺术效果
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
    查看>>
    OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
    查看>>
    Opencv中KNN背景分割器
    查看>>
    OpenCV中基于已知相机方向的透视变形
    查看>>
    opencv保存图片路径包含中文乱码解决方案
    查看>>