Spring Boot无法从我的文件系统中获取配置文件

时间:2018-09-17 13:53:45

标签: java spring-boot spring-cloud spring-cloud-config

我正在尝试在Spring Boot和Spring Cloud上构建示例应用程序。 我已经在位于桌面的 config.properties 属性文件中编写了数据库和休眠配置,我希望我的Spring Boot能够使用此配置。

我的项目有3个模块

  • API
  • DataLayer
  • ServiceLayer

这是我在API的application.property文件中提到的代码

spring.profiles.active = native spring.cloud.config.server.native.searchLocation = C:/Users/DEV/Desktop/configuration/config.properties

并且DataLayer和ServiceLayer的属性文件为空

但是当我运行API时,出现以下错误

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class


Action:

Consider the following:
	If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
	If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).


Process finished with exit code 1

任何人都可以帮助我解决这个错误。

谢谢。

2 个答案:

答案 0 :(得分:0)

您必须在属性文件位置加上 file:

https://cloud.spring.io/spring-cloud-config/multi/multi__spring_cloud_config_server.html的文档

配置服务器中还有一个“本机”配置文件,该配置文件不使用Git,而是从本地类路径或文件系统(您要使用spring.cloud.config.server指向的任何静态URL)加载配置文件。 native.searchLocations)。要使用本机配置文件,请使用spring.profiles.active = native启动Config Server。

  • [注意] 记住要使用file:前缀作为文件资源(默认情况下,没有前缀通常是classpath)。与任何Spring Boot一样 配置,您可以嵌入$ {}样式的环境占位符,但是 请记住,Windows中的绝对路径需要一个额外的/(用于 例如file:/// $ {user.home} / config-repo)。
  • [警告] searchLocations的默认值与本地Spring Boot应用程序相同(即[classpath:/,classpath:/ config, 文件:./,文件:./ config])。这不会暴露 从服务器到所有客户端的application.properties,因为任何 服务器中存在的属性源在发送之前被删除 给客户。
  • [提示]文件系统后端非常适合快速入门和测试。要在生产中使用它,您需要确保 文件系统是可靠的,并且可以在Config的所有实例之间共享 服务器。

答案 1 :(得分:0)

无法通过您的API模块完成此操作。您已将配置服务器属性添加到“客户端”(从配置的角度来看)应用程序。

如果您想使用Spring Cloud Config来配置项目,则应该有单独的应用程序来管理您的配置。我们称之为config-server。 (您应该正确配置maven或gradle依赖项,请参阅文档)要在native的{​​{1}}中配置config-server配置文件的用法,您必须添加问题中提到的属性(例如application.properties个人资料)。

native

注意:spring.profiles.active=native spring.cloud.config.server.native.searchLocation=file:<path-to-the-directory-with-conf-files> or classpath:/<path-to-the-directory-with-conf-files> 可以处理许多服务的配置。 可以在文档Spring Cloud Config Server section中找到更多信息。

然后在您的Spring引导应用程序API(或任何其他模块)中,添加config-server依赖项并添加spring-cloud-config-client(或.yml)配置文件。您应该在此处添加描述与bootstrap.properties进行通信的属性。默认情况下,config-server监听端口8888。

config-server

在启动时,它将通过http转到spring.application.name=<your app name> spring.cloud.config.uri=http://localhost:8888 # this is also default value for this property ,并根据服务名称(config-server)获取您的配置属性。 在Spring Cloud Config client section

中可以找到更多内容

重要:确保在配置目录中正确组织文件(spring.application.name使用native配置文件使用文件),找到一些示例。属性文件的命名很重要。首先,您可以尝试使用config-server