【Java】SpringBoot项目中resource目录下有多个配置文件,如何指定某个特定的配置文件生效?

简介: 【Java】SpringBoot项目中resource目录下有多个配置文件,如何指定某个特定的配置文件生效?

在我们开发项目的时候,会有多个开发环境,比如测试环境,生产环境,开发环境,产品环境等环境,如下

怎么多的配置文件,那么哪一个配置文件会生效?我们如何指定我们需要的配置文件?如何指定默认生效的配置文件?

我在程序运行的时候发现了如下一行

也就是默认如果说存在这么多的配置环境,默认会开启dev的配置,那么我们是否能通过配置的方式更加显式的指定我们的配置文件呢?答案是可以的:如下介绍几种方法

1:首先是直接使用全局配置

你可以在项目创建一个config包,然后使用config包指定当前的开发环境

2:你也可以使用System类进行配置文件的指定,当然我们肯定不推荐这种方式

3:你也可以配置JVM的启动参数

java -jar -Dspring.profiles.active=dev demo-0.0.1-SNAPSHOT.jar

4:这是我使用的方法,如下

<build>
        <defaultGoal>compile</defaultGoal>
        <finalName>easy_config</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>environment/</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources/environment/${running.env}</directory>
                <includes>
                    <include>**/*</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.5.8</version>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.2</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <running.env>dev</running.env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <running.env>test</running.env>
            </properties>
        </profile>
        <profile>
            <id>qa</id>
            <properties>
                <running.env>qa</running.env>
            </properties>
        </profile>
        <profile>
            <id>stage</id>
            <properties>
                <running.env>stage</running.env>
            </properties>
        </profile>
        <profile>
            <id>product</id>
            <properties>
                <running.env>product</running.env>
            </properties>
        </profile>
    </profiles>

如果你看到了如下这一行代码,你就会发现效果,我们可以使用activation这个标签来控制具体使用资源文件中的哪一个文件。

<profile>
            <id>dev</id>
            <properties>
                <running.env>dev</running.env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>

5:使用IDEA的配置

使用这种配置的效果是你存在有application-{spring.profiles.active}.yml类型的文件,并且他们应该直接显式的方式存在


相关文章
|
10天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
70 26
|
22天前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
36 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
21天前
|
Java
Java项目中高精度数值计算:为何BigDecimal优于Double
在Java项目开发中,涉及金额计算、面积计算等高精度数值操作时,应选择 `BigDecimal` 而非 `Double`。`BigDecimal` 提供任意精度的小数运算、多种舍入模式和良好的可读性,确保计算结果的准确性和可靠性。例如,在金额计算中,`BigDecimal` 可以精确到小数点后两位,而 `Double` 可能因精度问题导致结果不准确。
|
28天前
|
分布式计算 Java Hadoop
linux中HADOOP_HOME和JAVA_HOME删除后依然指向旧目录
通过以上步骤,可以有效地解决 `HADOOP_HOME`和 `JAVA_HOME`删除后依然指向旧目录的问题。确保在所有相关的配置文件中正确设置和删除环境变量,并刷新当前会话,使更改生效。通过这些措施,能够确保系统环境变量的正确性和一致性。
25 1
|
1月前
|
Java Android开发
Eclipse 创建 Java 项目
Eclipse 创建 Java 项目
39 4
|
29天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
37 0
|
5天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
35 6
|
20天前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
|
18天前
|
存储 监控 小程序
Java中的线程池优化实践####
本文深入探讨了Java中线程池的工作原理,分析了常见的线程池类型及其适用场景,并通过实际案例展示了如何根据应用需求进行线程池的优化配置。文章首先介绍了线程池的基本概念和核心参数,随后详细阐述了几种常见的线程池实现(如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等)的特点及使用场景。接着,通过一个电商系统订单处理的实际案例,分析了线程池参数设置不当导致的性能问题,并提出了相应的优化策略。最终,总结了线程池优化的最佳实践,旨在帮助开发者更好地利用Java线程池提升应用性能和稳定性。 ####
|
20天前
|
缓存 Java 开发者
Java多线程编程的陷阱与最佳实践####
本文深入探讨了Java多线程编程中常见的陷阱,如竞态条件、死锁和内存一致性错误,并提供了实用的避免策略。通过分析典型错误案例,本文旨在帮助开发者更好地理解和掌握多线程环境下的编程技巧,从而提升并发程序的稳定性和性能。 ####

热门文章

最新文章