当前位置: 首页 > 知识库问答 >
问题:

Spring云配置无法加载本机配置文件,除非文件名为应用程序

林礼骞
2023-03-14

奇怪的事情发生在我身上。我不知道如何解决它,Spring云配置不能加载本机或云配置文件,除非它的文件名是application.yml/application.properties。

以下代码是我的配置:

波姆。xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
    <relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>micro-certification-config-center</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Dalston.SR2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

配置服务器:

@SpringBootApplication
@EnableConfigServer
public class ConfigServer {

  public static void main(String[] args) {
      SpringApplication.run(ConfigServer.class, args);
  }

}

应用yml:

server:
  port: 8000

spring:
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/shared
  profiles:
     active: native

共享文件夹结构器:
资源
--shared
--application-dev.yml
--sms-dev.yml

它看起来不错,运行良好,没有错误,但当我访问http://127.0.0.1:8000/configCenter/dev/master,它只显示应用程序属性源。

答复如下:

{
    "name": "configCenter",
    "profiles": [
        "dev"
    ],
    "label": "master",
    "version": null,
    "state": null,
    "propertySources": [
        {
            "name": "classpath:/shared/application-dev.yml",
            "source": {
                "logging.level.org.springframework.security": "INFO",
                "eureka.instance.prefer-ip-address": true,
                "eureka.client.serviceUrl.defaultZone": "http://registry:8761/eureka/",
                "security.oauth2.resource.user-info-uri": "http://auth-service:5000/uaa/users/current",
                "spring.rabbitmq.host": "rabbitmq"
            }
        }
    ]
}

服务器控制台:

2017-08-24 22:34:08.055  INFO 30010 --- [nio-8000-exec-4] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@4a931797: startup date [Thu Aug 24 22:34:08 CST 2017]; root of context hierarchy
2017-08-24 22:34:08.062  INFO 30010 --- [nio-8000-exec-4] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2017-08-24 22:34:08.075  INFO 30010 --- [nio-8000-exec-4] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: classpath:/shared/application-dev.yml
2017-08-24 22:34:08.075  INFO 30010 --- [nio-8000-exec-4] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@4a931797: startup date [Thu Aug 24 22:34:08 CST 2017]; root of context hierarchy

以上显示了“应用程序”。yml的文件只起作用了。

有人能帮帮我吗?非常感谢!

共有2个答案

毋举
2023-03-14

正如@spencergibb所说,如果我想加载sms-dev.yml,我应该将application.name重命名为短信。

石正奇
2023-03-14

外部配置可以帮助你。细节在这里:http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

您可以通过指南行中的命令将此默认应用程序配置更改为外部配置:

如果不喜欢application.properties作为配置文件名,可以通过指定spring.config.name环境属性切换到另一个。还可以使用spring.config.location环境属性(以逗号分隔的目录位置列表或文件路径)引用显式位置。

$java-jarmyproject。罐子——Spring。配置。name=myproject或

$java-jarmyproject。罐子——Spring。配置。location=classpath:/default。属性,类路径:/override。属性

或者在你的代码中,你可以这样写:

     new SpringApplicationBuilder(Application.class)
                    .properties("spring.config.name:YOUR_EXTERNAL_CONFIG_FILE")
                    .build()
                    .run(args);
    }

希望这有帮助。

 类似资料:
  • 我查看了过去的堆栈跟踪,我有所有正确的设置。我认为这更多的是配置文件的问题。 我没有使用git作为数据源,而是使用S3,但它可以工作,当我运行时在我的本地 http://localhost:8086/application/default 它返回 在我的pom上,我已经准备好了春靴 Spring的云是 春云已设置 设置启动器配置 在我设置的客户端的应用程序yml中 @actiatedPropert

  • 我刚刚将我们的Spring Boot项目从引导升级到v2.6.2,从Spring Cloud升级到2021.0.0。 现在,我的远程配置获取没有任何效果,应用程序也无法获取正确的属性文件 [main]INFO o. s. c. c. c. ConfigServiceProperty tySourceLocator-从服务器获取配置:http://localhost:8080 [main]WARN

  • 问题内容: 对于这个先前的问题,我将Selenium更新为2.0.1版,但是现在我又遇到了另一个错误,即使配置文件位于以下位置: 怎么了?我该如何解决这个问题? 问题答案: 更新: 硒团队已修复最新版本。对于几乎所有环境,修复程序都是: 点安装-U硒 尚不清楚它是在哪个版本上修复的(显然是r13122),但肯定是在2.26.0(更新时为最新)上已修复。 此错误意味着_wait_until_conn

  • 问题内容: 好的,所以我不想在这里展开一场圣战,但是我们正在努力巩固处理应用程序配置文件的方式,我们正在努力决定采用哪种最佳方法。目前,我们分发的每个应用程序都在使用其自己的临时配置文件,无论是属性文件(ini样式),XML还是JSON(目前仅在内部使用!)。 目前,我们的大多数代码是Java,因此我们一直在研究Apache Commons Config ,但是我们发现它非常冗长。我们还研究了XM

  • 配置文件分为用户级配置和项目级配置。 用户级配置包含用户的环境及 UI 相关的选项,包括: 用户选项 中的所有内容。 扩展工具,包括已配置的扩展列表。 其他工具中的UI相关选项,例如 Target 组件下 站点地图 的选定视图。 项目级配置包含在特定目标应用程序上执行的工作相关的选项,包括: 项目选项中的所有内容。 单个Burp工具中的非UI相关选项,例如 代理 (Proxy) 和 扫描器 (Sc