代码之家  ›  专栏  ›  技术社区  ›  Abzelhan

如果prod配置文件不存在,则使用dev配置文件。

  •  2
  • Abzelhan  · 技术社区  · 6 年前

    我有Spring引导应用程序,我有3个属性文件: applications.properties, applications-dev.properties, applicaton-prod.properties . 在 applications.properties 我指定了那个 spring.profiles.active=prod . 但是我想允许在没有prod配置文件的情况下启动应用程序( applicaton-prod.properties )这意味着Spring必须在dev概要文件中启动应用程序( applications-dev.properties )自动。我如何实现这一点?可能是一些 MissingOnProfile 注释是否存在?)我的任务是基于application.properties文件创建不同的应用程序行为。我也用 @Profile 每个bean中依赖于特定概要文件的注释。所有任务都是创建WebInstaller,在完成步骤中,我将创建application-prod.properties并使用 RestartEndpoint 我将从重新启动应用程序上下文和所需的bean application-prod.properties 会注射。但我需要和乌德一起创业 应用程序产品属性 ,但如果该文件存在,我将在prod配置文件中启动。

    4 回复  |  直到 6 年前
        1
  •  1
  •   Pang abielita    6 年前

    SpringApplication application = new SpringApplication(IdMatrixApplication.class);
    File file = new File("src/main/resources/dev/application-prod.properties");
    if (file.exists()) {
        application.setAdditionalProfiles("prod","dev");
    }
    application.run(args);
    
        2
  •  1
  •   NiVeR    6 年前

    application.properties application-{profile}.properties profile

    -Dprofile=dev JAVA_OPTIONS setenv.sh

        3
  •  1
  •   tsarenkotxt    6 年前

    prod

    1. application.properties spring.profiles.active=prod

    application-prod.properties dev EnvironmentPostProcessor

    1. public class ProfileResolverEnvironmentPostProcessor implements EnvironmentPostProcessor {
      
      @Override
      public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
          ClassPathResource prodPropertiesResource = new ClassPathResource("application-prod.properties");
          // if "application-prod.properties" missing and "prod" profile active
          if (!prodPropertiesResource.exists() && environment.acceptsProfiles("prod")) {
              environment.setActiveProfiles("dev");
              //environment.addActiveProfile("dev");
          }
      }
      
      }
      
    2. META-INF/spring.factories

    org.springframework.boot.env.EnvironmentPostProcessor=\ com.example.ProfileResolverEnvironmentPostProcessor

    Customize the Environment

    @Profile("!prod") Environment

        4
  •  0
  •   GolamMazid Sajib    6 年前

    application-dev.properties application.properties applicatoin.properties application.yml