spring-boot - Spring Cloud 配置 JDBC 后端

标签 spring-boot spring-cloud spring-jdbc spring-cloud-config

我需要配置 Spring Cloud 配置服务器,以便从 JDBC 后端 (PostgreSQL) 而不是 Git 存储库读取 variuos 实例的属性。我按照官方文档进行操作,但不起作用。 我添加到 Spring Cloud Config Server 的 application.properties

spring.profiles.active=jdbc
spring.datasource.url= jdbc:postgresql://localhost:5432/example
spring.datasource.username=user
spring.datasource.password=pass

我在数据库中创建表

CREATE TABLE public."PROPERTIES"
(
    "APPLICATION" character varying(500) COLLATE pg_catalog."default",
    "PROFILE" character varying(500) COLLATE pg_catalog."default",
    "LABEL" character varying(500) COLLATE pg_catalog."default",
    "KEY" character varying(500) COLLATE pg_catalog."default",
    "VALUE" character varying(500) COLLATE pg_catalog."default"
)

并且,对于 Eureka 服务器,我插入

INSERT INTO public."PROPERTIES"
("APPLICATION", "PROFILE", "LABEL", "KEY", "VALUE")
VALUES('discovery-service', '', '', 'spring.application.name', 'discovery-service');
INSERT INTO public."PROPERTIES"
("APPLICATION", "PROFILE", "LABEL", "KEY", "VALUE")
VALUES('discovery-service', '', '', 'server.port', '8761');

如果我在 Git 存储库中使用此参数,Eureka 服务器工作正常,但使用 JDBC 后端则不起作用。有人可以帮助我吗?

最佳答案

PSQLException 表示“属性”不存在是因为 PostgreSQL 区分大小写。使用 PGAdmin 创建表/列时,如果名称全部大写,该工具会自动添加引号,从而区分大小写。

您可以尝试以下操作:

CREATE TABLE public.properties
(
    application character varying(50) COLLATE pg_catalog."default",
    profile character varying(50) COLLATE pg_catalog."default",
    label character varying(50) COLLATE pg_catalog."default",
    key character varying(50) COLLATE pg_catalog."default",
    value character varying(500) COLLATE pg_catalog."default"
)

INSERT INTO properties
("application", "profile", "label", "key", "value")
VALUES('myconfig', 'default', 'master', 'my.message', 'hello');

application.properties 包含:

server.port=8888
spring.profiles.active=jdbc
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url= jdbc:postgresql://localhost:5432/configdb
spring.datasource.username=xxxxxx
spring.datasource.password=xxxxxx

您现在可以使用 http://localhost:8888/myconfig/default 进行访问

关于spring-boot - Spring Cloud 配置 JDBC 后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47534255/

相关文章:

java - 在 spring boot 中添加外部静态文件(css、js、png ...)

java - 如何使用 Spring Boot 嵌入式 ldap 服务器向 LDIF 文件添加条目

java - 如何使用任何加密算法对 json 响应中的单个字段进行加密?

spring - 如何在 POST 中发送 ClientId 和 ClientSecret,而不是在带有 ClientCredentialsAccessTokenProvider 的 header 中

java - 如果服务器未运行,则终止 Spring Cloud 客户端

Java Spring boot - OnceRequestPerFilter 仅允许 Controller 请求映射

spring - 使用spring-cloud-starter-zuul时如何实现和配置route类型的ZuulFilter?

java - 覆盖属性文件中数据库连接的超时

mysql - jdbcTemplate查询序列化

java - 带有 Tomcat DBCP 和多个数据源的 Spring JDBC