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

mf98qq94  于 5个月前  发布在  Spring
关注(0)|答案(2)|浏览(70)

如何指定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文件,然后添加下面的属性。

spring:
  application:
    name: order   
  cloud:
    config:
      name: ${spring.application.name}, orderdb, ordermsg
      profile: dev

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

bq8i3lrv

bq8i3lrv2#

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

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

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

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


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

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


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

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

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

@SpringBootApplication
public class MyBoot {
    public static void main(String[] args) {
        String[] newArgs = Stream.concat (
                Stream.of (args),
                Stream.of ("--spring.config.location=classpath:/myboot.properties"))
            .toArray(String[]::new);

        SpringApplication.run(
            new Class<?>[] {MyBoot.class, MyController.class},
            newArgs);


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

相关问题