Java Spring引导读取自定义环境特定文件
我有以下问题,, 我想读取特定于环境的自定义文件。比如 应用程序开发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 Spring引导读取自定义环境特定文件,java,spring,spring-boot,Java,Spring,Spring Boot,我有以下问题,, 我想读取特定于环境的自定义文件。比如 应用程序开发kafka.properties、application-prod-kafka.properties等,然后绑定属性。 我知道春天的概况。 我曾考虑过使用@propertysource,但同样,我不确定该在文件名方面指定什么。 感谢您的帮助 编辑- 我的个人资料应该是dev、prod等,而不是dev kafka或prod kafka。 对于每个配置文件和每个需要配置的组件,我想要一个特定于配置文件的文件 卡夫卡 应用开发haze
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。不是卡夫卡。不要只贴代码答案,描述你的答案。不要只贴代码答案,描述你的答案。你能用完整的代码片段详细解释一下吗?你的问题陈述到底是什么?你能用完整的代码片段详细解释一下吗?你的问题陈述到底是什么?