Spring Cloud Config Server中的自定义文件名

mf98qq94  于 2024-01-05  发布在  Spring
关注(0)|答案(2)|浏览(167)

如何指定spring Boot 应用程序以仅访问Spring Cloud Config Server中的其他文件中的特定.properties文件。
我的Spring Cloud Config有以下文件:application.propertiesorder-dev.propertiesinventory-dev.properties,所有我的db和消息传递属性都在order-dev和inventory-dev文件中。
现在我希望将这些属性移动到orderdb-devinventorydb-devordermsg-devinventorymsg-dev文件中。
如何配置我的orderinventory服务,从orderdb-devinventorydb-devordermsg-devinventorymsg-dev文件中选择属性?我一直在寻找相同的属性。阅读官方文档,感觉迷路了。任何帮助都将不胜感激。

oiopk7p5

oiopk7p51#

在resources文件夹下添加一个bootstrap.yml文件,然后添加下面的属性。

  1. spring:
  2. application:
  3. name: order
  4. cloud:
  5. config:
  6. name: ${spring.application.name}, orderdb, ordermsg
  7. profile: dev

字符串
这样,它将首先从order-dev.properties文件加载属性。然后是orderdb-dev.properties,然后是ordermsg-dev.properties。

bq8i3lrv

bq8i3lrv2#

假设你的配置文件名是myboot.properties
根据documentation to externalizable configs,有很多方法可以使用命令行参数--spring.config.name启动应用程序:

  1. $ java -jar myproject.jar --spring.config.name=myboot

字符串
在命令行中,我们指定myboot,但Sping Boot 将搜索myboot.properties。许多属性文件可以添加逗号分隔,如下所示:

  1. $ java -jar myproject.jar --spring.config.name=myboot,myboot2,myboot3


现在,myboot.properties的公共属性将被myboot2.properties覆盖,然后被myboot3.properties覆盖。
另一种选择,--spring.config.location中的完整配置名称:

  1. $ java -jar myproject.jar --spring.config.location=classpath:/myboot.properties


现在文件名必须包含文件扩展名。不能使用任意扩展名**,因为Sping Boot 未知的扩展名会生成错误。--spring.config.location还支持多个逗号分隔的配置名。
或者,在源代码中可以实现完全相同的功能,而无需更改命令行:

  1. @SpringBootApplication
  2. public class MyBoot {
  3. public static void main(String[] args) {
  4. SpringApplication.run(
  5. new Class<?>[] {MyBoot.class, MyController.class},
  6. new String[]{"--spring.config.name=myboot"});
  1. @SpringBootApplication
  2. public class MyBoot {
  3. public static void main(String[] args) {
  4. SpringApplication.run(
  5. new Class<?>[] {MyBoot.class, MyController.class},
  6. new String[]{"--spring.config.location=classpath:/myboot.properties"});

或者,您可能希望避免删除现有的命令行参数:

  1. @SpringBootApplication
  2. public class MyBoot {
  3. public static void main(String[] args) {
  4. String[] newArgs = Stream.concat (
  5. Stream.of (args),
  6. Stream.of ("--spring.config.location=classpath:/myboot.properties"))
  7. .toArray(String[]::new);
  8. SpringApplication.run(
  9. new Class<?>[] {MyBoot.class, MyController.class},
  10. newArgs);


所以,上面的代码只是一个想法,可能不够灵活,根据需要灵活。

展开查看全部

相关问题