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

基于多主动轮廓的Spring配置

翟俊远
2023-03-14

我们当前的设置包含一个使用Ant处理的文件夹结构:

>

  • 窗口:

    • 底座:
      • application.properties
        null
        null
        null

      Linux:

      • 底座:
        • application.properties
        • application.properties
        • application.properties
        • application.properties

        有没有一种方法可以使用Spring配置文件来使用Spring开箱即用的方式来做到这一点?

  • 共有1个答案

    马航
    2023-03-14

    我将实现属性:

    @Bean
    @Primary
    fun properties(context: AbstractApplicationContext?): PropertySourcesPlaceholderConfigurer {
        val propertySourcesPlaceholderConfigurer = PropertySourcesPlaceholderConfigurer()
    
        val yaml = YamlPropertiesFactoryBean()
        val os = System.getProperty("os.name").replace(" ", "")
    
        val resources = context?.environment?.activeProfiles
            ?.map { profile ->
                ClassPathResource("$os-$profile-application.yml")
            }?.plus(ClassPathResource("$os-base-application.yml"))
            ?.toTypedArray()?: emptyArray()
    
        yaml.setResources(*resources)
    
        propertySourcesPlaceholderConfigurer.setProperties(yaml.`object`!!)
        return propertySourcesPlaceholderConfigurer
    }
    

    例如,在MacOS上,您将得到以下结果:

    MacOSX-test-application.yml
    MacOSX-base-application.yml
    

    它在科特林,但我想你有这个主意!

     类似资料:
    • 我有2个URL,其中1个特定于Dev,另一个特定于Prod。我也在使用Spring profiling,其中我有一个单独的文件用于Dev和Prod application-Dev。性能和应用-prod。属性和我的应用。对于Dev env,属性文件如下所示 spring.profiles.active=dev 现在在我的java代码中,我想有一个属性,它将根据我使用的Spring配置文件绑定到适当的

    • 这是我的代码,但我仍然无法纠正它。请在这方面帮助我。 这里的错误是:

    • 我想根据活动的Spring配置文件有不同的Spring配置。如果我用--spring.profiles.active=blabla启动jar,我使用一个配置文件,如果start参数中没有配置文件,我使用另一个配置文件。现在我可以使用blabla配置文件,但是如果我在没有配置文件的情况下启动jar,它会同时使用两个配置文件。 默认配置: Blabla config: 现在: java-jar app

    • 我正在应用程序中使用Microprofile配置(,而不是)。我有一个配置,它对不同的值采取不同的分支。为了测试()代码中的所有路径,我需要能够在运行时更改该值。有没有人可以提供一些如何做到这一点的建议?我的属性是使用系统属性设置的,但我对如何处理这一点持开放态度。

    • 我有3个maven项目A、B、C。A是B的父项目,B是C的父项目。所有概要文件都在pom中定义。项目A的xml。 在项目C中,我试图根据所选概要文件在spring测试上下文中选择属性文件(在src/test/resources下)。对于回归测试,我们有两个属性文件: 本地应用程序测试。属性 在我们的Windows开发系统上,选定的配置文件将是“本地”的,相应地在服务器上也是如此。选择“本地”配置文

    • 基于这篇文章,我运行我的Spring Boot应用程序 具有该配置文件的组件不运行。我尝试用根应用程序类中的以下代码来验证活动概要文件 日志消息输出为空。 少了什么?