Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导读取自定义环境特定文件_Java_Spring_Spring Boot - Fatal编程技术网

Java Spring引导读取自定义环境特定文件

Java Spring引导读取自定义环境特定文件,java,spring,spring-boot,Java,Spring,Spring Boot,我有以下问题,, 我想读取特定于环境的自定义文件。比如 应用程序开发kafka.properties、application-prod-kafka.properties等,然后绑定属性。 我知道春天的概况。 我曾考虑过使用@propertysource,但同样,我不确定该在文件名方面指定什么。 感谢您的帮助 编辑- 我的个人资料应该是dev、prod等,而不是dev kafka或prod kafka。 对于每个配置文件和每个需要配置的组件,我想要一个特定于配置文件的文件 卡夫卡 应用开发haze

我有以下问题,, 我想读取特定于环境的自定义文件。比如 应用程序开发kafka.properties、application-prod-kafka.properties等,然后绑定属性。 我知道春天的概况。 我曾考虑过使用@propertysource,但同样,我不确定该在文件名方面指定什么。 感谢您的帮助

编辑- 我的个人资料应该是dev、prod等,而不是dev kafka或prod kafka。 对于每个配置文件和每个需要配置的组件,我想要一个特定于配置文件的文件

卡夫卡

应用开发hazelcast

应用程序开发mysql

应用产品卡夫卡

应用产品hazelcast

应用程序prod mysql

卡夫卡的应用程序

hazelcast的应用程序

应用程序int mysql。

您可以使用spring.profiles.active来指定配置文件。例如,使用spring.profiles.active=dev来指定application-dev.properties。

您还可以在运行应用程序时指定配置文件,如:

java -jar myapp.jar --spring.profiles.active=prd
可以使用spring.profiles.active指定配置文件。例如,使用spring.profiles.active=dev来指定application-dev.properties。

您还可以在运行应用程序时指定配置文件,如:

java -jar myapp.jar --spring.profiles.active=prd

根据回应进行更新

下面的示例如下:

在application.properties文件中包含以下内容

list of your normal properties
---
spring.profiles: prod
spring.profiles.include:
  - prod-kafka
----
spring.profiles: dev
spring.profiles.include:
  - dev-kafka

根据回应进行更新

下面的示例如下:

在application.properties文件中包含以下内容

list of your normal properties
---
spring.profiles: prod
spring.profiles.include:
  - prod-kafka
----
spring.profiles: dev
spring.profiles.include:
  - dev-kafka

添加类以根据需要加载属性文件

@Configuration
public class AppConfig {
    @Configuration
    @PropertySource("dev.properties")
    static class dev{}

    @Configuration
    @PropertySource("prod.properties")
    static class prod{}
}
如果要通过不同的配置文件读取配置文件-Dspring.profiles.active

@Configuration
public class AppConfig {
    @Profile("dev")
    @Configuration
    @PropertySource("dev1.properties")
    static class dev1{}

    @Profile("dev")
    @Configuration
    @PropertySource("dev2.properties")
    static class dev2{}

    @Profile("prod")
    @Configuration
    @PropertySource("prod1.properties")
    static class prod1{}

    @Profile("prod")
    @Configuration
    @PropertySource("prod2.properties")
    static class prod2{}
}

添加类以根据需要加载属性文件

@Configuration
public class AppConfig {
    @Configuration
    @PropertySource("dev.properties")
    static class dev{}

    @Configuration
    @PropertySource("prod.properties")
    static class prod{}
}
如果要通过不同的配置文件读取配置文件-Dspring.profiles.active

@Configuration
public class AppConfig {
    @Profile("dev")
    @Configuration
    @PropertySource("dev1.properties")
    static class dev1{}

    @Profile("dev")
    @Configuration
    @PropertySource("dev2.properties")
    static class dev2{}

    @Profile("prod")
    @Configuration
    @PropertySource("prod1.properties")
    static class prod1{}

    @Profile("prod")
    @Configuration
    @PropertySource("prod2.properties")
    static class prod2{}
}

所以,这就是我所做的

我正在使用spring概要文件,并在application.properties文件中添加了spring.profiles.active=dev

list of your normal properties
---
spring.profiles: prod
spring.profiles.include:
  - prod-kafka
----
spring.profiles: dev
spring.profiles.include:
  - dev-kafka
还有一些特定于环境的属性文件可用。因此,application-dev.properties、application-prod.properties等将由spring boot自动检测

在我的应用程序中,我有一个用

      @PropertySource("classpath:${file-name}")
在这里,属性文件名出现在所有特定于环境的属性文件中。因此,根据您运行的配置文件,spring boot将自动检测到2个属性文件。比如说-


如果使用概要文件dev运行,它将检测application.properties和application-dev.properties。然后根据application-dev.properties中文件名的值,它将检测应用程序dev kafka.properties。

所以,这就是我所做的

我正在使用spring概要文件,并在application.properties文件中添加了spring.profiles.active=dev

list of your normal properties
---
spring.profiles: prod
spring.profiles.include:
  - prod-kafka
----
spring.profiles: dev
spring.profiles.include:
  - dev-kafka
还有一些特定于环境的属性文件可用。因此,application-dev.properties、application-prod.properties等将由spring boot自动检测

在我的应用程序中,我有一个用

      @PropertySource("classpath:${file-name}")
在这里,属性文件名出现在所有特定于环境的属性文件中。因此,根据您运行的配置文件,spring boot将自动检测到2个属性文件。比如说-


如果使用概要文件dev运行,它将检测application.properties和application-dev.properties。然后根据application-dev.properties中文件名的值,它将检测应用程序dev kafka.properties。

将与配置相关的特定于环境的kafka文件放入参考资料包中

您将使用以下代码获得弹簧活动配置文件的值

@Autowired
private Environment environment;

String activeProfile = environment.getActiveProfiles()[0];
所以您将在activeProfile变量中获得活动概要文件(如dev、uat或prod)的值,只需使用

private String ACTIVE_PROFILES_KAFKA_FILE = activeProfile + "_kafka.yml";
因此,您将获得特定的kafka文件名,如dev_kafka for dev、prod_kafka for prod等等,用于各自的环境,并在代码中加载该文件,如下所示

MainClass.class.getClassLoader()
                            .getResourceAsStream(ACTIVE_PROFILES_KAFKA_FILE);

将与配置相关的特定于环境的kafka文件放入参考资料包中

您将使用以下代码获得弹簧活动配置文件的值

@Autowired
private Environment environment;

String activeProfile = environment.getActiveProfiles()[0];
所以您将在activeProfile变量中获得活动概要文件(如dev、uat或prod)的值,只需使用

private String ACTIVE_PROFILES_KAFKA_FILE = activeProfile + "_kafka.yml";
因此,您将获得特定的kafka文件名,如dev_kafka for dev、prod_kafka for prod等等,用于各自的环境,并在代码中加载该文件,如下所示

MainClass.class.getClassLoader()
                            .getResourceAsStream(ACTIVE_PROFILES_KAFKA_FILE);

谢谢你的回复。仔细检查我的问题,我想要应用程序--kafka.properties。可以有多个这样的文件。应用——hazelcast。应用程序——mysqlu感谢您的回复。仔细检查我的问题,我想要应用程序--kafka.properties。可以有多个这样的文件。应用——hazelcast。应用程序--mysqlFor me配置文件将是dev
而且只戳。不是卡夫卡。对我来说,个人资料只能是dev和prod。不是卡夫卡。不要只贴代码答案,描述你的答案。不要只贴代码答案,描述你的答案。你能用完整的代码片段详细解释一下吗?你的问题陈述到底是什么?你能用完整的代码片段详细解释一下吗?你的问题陈述到底是什么?