首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Cloud Config 开发指南 3

这一篇应该是Spring Cloud Config的最后一篇。今天讲讲关于Spring Cloud Config对于数据库的支持,所谓JDBC Backend。

在某些特定场合下,客户可能并不希望将配置信息放在SVN、Git等配置平台上,而是更倾向于将配置项放在数据库中。针对这种场景,Spring Cloud Config也有配套的解决方案。

针对这种情况,我们需要创建一个JdbcEnvironmentRepository,同时还需要创建一个JdbcTemplate和一个DataSource配套使用。默认情况下,Spring要求建立一个名为PROPERTIES的表,包含KEY、VALUE、LABEL、PROFILE、APPLICATION五个字段,五个字段的类型不做强制要求,只需要可以映射为Java中的String类型即可。

数据源配置完成后,当Client请求获取配置时,Config Server会执行SQL查询这张表,执行的SQL为“SELECT KEY, VALUE from PROPERTIES where APPLICATION=? and PROFILE=?and LABEL=?”。

从描述的逻辑可以看出,这张表的配置是参考Properties文件执行的,所以如果要在其中配置加密的配置项,那么就不能使用单引号包裹。Where子句中的三个条件,依次分别对应了spring.application.name、spring.profile.active、spring.cloud.config.label三个配置项。Key如果需要分级,也同样使用英文句号作为分隔符。

从这句SQL可以看出,其中涉及到很多关键字,对某些数据库不是很友好。例如MySQL中不能直接使用KEY作为SELECT的结果集列名,需要使用`来包裹,写成SELECT `KEY` FROM PROPERTIES。

如果想自定义数据库结构和查询语句的话,可以设计好表结构,表中必须包含前述五个字段,名称不需要相同,但是表达的含义要一样。其次,执行查询的时候,SELECT表达式和WHERE后面的条件都不能乱,否则你就需要自己实现一个EnvironmentRepository了。

设计好表和SQL以后,调用JdbcEnvironmentRepository的setSql方法,传入自定义的SQL语句即可。例如,自定义的表中,具备APPLICATION含义的字段叫做appname,那么WHERE条件的第一个参数需要改为appname=?。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180112G0PXNE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券