当前位置: 首页 > 知识库问答 >
问题:

如何移动应用程序。属性或在Spring Boot Maven项目中执行外部属性

鲁成天
2023-03-14

所以我在Spring Boot中开发了一些应用程序,但我偶然发现了这个应用程序。属性文件,我想让它更易于使用,因为我有一些环境要测试,比如开发、Uat和生产

当我想启动应用程序,我建立它使用mvn干净安装与application.properties配置文件上的环境。

就像我想在开发中启动一样

spring.profiles.active=dev

或者当我想在我使用的uat环境中部署它时

spring.profiles.active=uat

有没有办法让它更简单,比如使用外部道具,所以我不需要使用应用程序。属性,因为我将上载应用程序。属性,以便应用程序可以读取外部属性。

我已经尝试过PropertySourcePlaceHolderConfigure,但没有成功

@Configuration
public class ExternalPropertyConfig {

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    final PropertySourcesPlaceholderConfigurer properties = new PropertySourcesPlaceholderConfigurer();

    Resource[] resources = new Resource[ ] {

    new FileSystemResource("/myth/app/data/weblogic_configuration/config/myth_uat_configuration.properties"),
    new FileSystemResource("/myth/app/data/weblogic_configuration/config/myth_dev_configuration.properties"),
    new FileSystemResource("/src/main/resources/myth_local_configuration.properties")
    };

    properties.setLocations( resources );
    properties.setIgnoreResourceNotFound(true);
    properties.setIgnoreUnresolvablePlaceholders(true);
    return properties;
    }
}

共有3个答案

倪炎彬
2023-03-14

我想这就是你要找的春装YML doc。通常通过YML实现配置的外部化。

卓胜
2023-03-14

您可以使用xml配置加载属性,如下所示:

<bean id="configProperties"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="systemPropertiesMode" value="2" />
        <property name="locations">
            <list>
                <value>classpath:db.properties</value>
                <value>classpath:nosql.properties</value>
                <value>classpath:api.properties</value>
            </list>
        </property>
</bean>

在此之后,可以使用属性spring。配置文件。在代码中的任何属性文件(数据库属性、nosql属性或api属性)中定义的活动-

@Service("bean")
public class Bean {
    @Value("${spring.profiles.active}")
    private String profile;
}
卫子平
2023-03-14

构建了jar之后,您可以像这样启动它

java -jar -Dspring.profiles.active=dev "app.jar"

提供活动配置文件将使特定配置文件生效

您只需创建概要文件范围的属性文件,如application-dev.properties或application-prod.properties

它们是自动加载的。不需要代码来加载它们

您可以查看此Spring Boot功能

 类似资料:
  • 我正在开发一个spring boot应用程序 我想用外部文件(例如)重写中的某些属性。 我尝试了几种方法: 中的“我的应用程序.属性”中的 我使用对其进行了测试。第一个方法只添加了属性,但没有重写它们。

  • 问题内容: 我有一个Spring应用程序,到目前为止运行良好。现在,我希望属性文件位于外部配置文件夹中,而不是在打包的jar中,而无需重新打包即可更改内容。这就是我得到的: 问题答案: 如果将其放置在名为spring的目录中的类路径中的某个位置(相应地更改名称/目录),则可以使用 这将指向web-inf / classes / config / springcontext.properties

  • 我正在寻找解决这个问题的方法。 我有几个属性文件(application.properties、application realdb.properties)。假设我从“realdb”spring概要文件开始。现在,我想在部署到tomcat上时重写我的属性。我决定将文件放在/lib文件夹中,因为它自动位于类路径上,我没有找到更好的(即特定于应用程序的类路径文件夹) 所以我可以在那里申请。属性,只要我

  • 我被要求从我的wars文件中外部化我的属性文件,并给一个文件一个外部路径,因为我有一个内部带有tomcat的docker图像,我被要求掌握docker外部的文件。 那要怎么做? 我已经知道如何修改pom以从构建中排除我的文件。

  • 我有一个带有源代码和测试层次结构的Spring Boot应用程序。在这两个层次结构中,我都有带有属性的application.yml文件。 假设我在src application.yml中有以下内容: 在application.yml的测试中,我得到了以下内容: 我希望我的所有测试都知道test application.yml中重写的值,如果test application.yml中没有值,则将从

  • 我在spring-boot 2.2.4中有一个应用程序 当我像这样启动应用程序时: 未能解析值“${nas.base.directory}”中的占位符“nas.base.directory” 我尝试使用OS ubuntu、RH8和spring-boot 2.2.4或2.1.3并用--spring.config.location替换-dconfig.location