详解SpringCloud mysql实现配置中心

 更新时间:2018年09月11日 14:49:09   作者:雨点的名字  
这篇文章主要介绍了详解SpringCloud mysql实现配置中心,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

mysql实现配置中心

本公司配置数据的管理是通过mysql进行配置管理,因为已经搭建好了,所以自己动手重新搭建一遍,熟悉整个流程。有关项目源码后期会补上github地址

微服务要实现集中管理微服务配置、 不同环境不同配置 、 运行期间也可动态调整 、 配置修改后可以自动更新的需求 ,Spring Cloud Config同时满足了以上要求。

一、项目搭建

本次主要用三个微服务

(1)Eureka-server: 7001 注册中心

(2)config-server : 5001 配置中心

(3)product-server : 8001 商品微服务

1、Eureka-server注册中心

注册中心很简单,这里不在重复些,注册中心没有变化。可以看之前写的博客 : SpringCloud(3)---Eureka服务注册与发现

2、配置中心微服务

 1、pom.xml

<!--服务中心jar包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

<!--配置中心jar包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>

<!--连接msql数据库相关jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>

2、application.yml

#服务名称
 server:
  port: 5001

#连接配置信息
 spring:
  application:
   name: config-server-jdbc
  profiles:
   active: jdbc
  cloud:
   config:
    server:
     default-label: dev
     jdbc:
      sql: SELECT akey , avalue FROM config_server where APPLICATION=? and APROFILE=? and LABEL=?
 #####################################################################################################
 # mysql 属性配置
  datasource:
   driver-class-name: com.mysql.jdbc.Driver
   url: jdbc:mysql://127.0.0.1:3306/test
   username: root
   password: root
 #####################################################################################################

#指定注册中心地址
 eureka:
  client:
   serviceUrl:
    defaultZone: http://localhost:7001/eureka/

这里主要讲下连接配置信息

(1) spring.profiles.active=jdbc ,自动实现JdbcEnvironmentRepository。

(2)sql语句自定义,否则会默认为“SELECT KEY, VALUE from PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?”,具体可以参考 JdbcEnvironmentRepository 实现。

(3)本人数据库建表为config_server,由于key,value和profile是mysql关键字,所以我都在最前面加了a。当然表名字段名都可以自定义。

(4) {application} 对应客户端的"spring.application.name"属性;

{aprofile} 对应客户端的 "spring.profiles.active"属性(逗号分隔的列表); 和

{label} 对应服务端属性,这个属性能标示一组配置文件的版本.

(5)只要 select出来是两个字段 ,框架会 自动包装到environment的map<key,value> 。

 3、mysql数据

4、springboot启动类

添加 @EnableConfigServer 注解

@SpringBootApplication
@EnableConfigServer
public class ConfigserverApplication {

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

3、product-service微服务

1、pom.xml

<!--服务中心jar-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    
    <!--配置中心客户端jar-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-config-client</artifactId>

2、bootstrap.yml

#指定注册中心地址
eureka:
 client:
  serviceUrl:
   defaultZone: http://localhost:7001/eureka/

#服务的名称
spring:
 application:
  name: product-service
 #指定从哪个配置中心读取
 cloud:
  config:
   discovery:
    service-id: config-server-jdbc
    enabled: true
   profile: dev
   label: dev

server:
 port: 8001

这里为什么用bootstrap.yml而不用application.yml,是因为若application.yml 和bootStrap.yml 在同一目录下,

则 bootStrap.yml 的加载顺序要高于application.yml ,即bootStrap.yml 会优先被加载。

为何需要把 config server 的信息放在 bootstrap.yml 里?

当使用 Spring Cloud 的时候,配置信息一般是从 config server 加载的,为了取得配置信息(比如密码等),你需要一些提早的或引导配置。

因此,把 config server 信息放在 bootstrap.yml,用来加载真正需要的配置信息。

3、ConfigController类(测试用)

@RestController
@RequestMapping("/api/v1/product")
public class ConfigController {

  @Value("${item_url}")
  private String url;

  /**
   * 输出url
   */
  @RequestMapping("url")
  public void list(){

    System.out.println(url);
  }

4、测试

通过访问:http://localhost:8001/api/v1/product/url 进入断点。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java异常中toString()和getMessage()区别

    Java异常中toString()和getMessage()区别

    在java异常体系中,要打印异常信息,可以通过:e.getMessage() 、 e.toString() e.printStackTrace() 等方法打印,本文主要介绍了Java异常中toString()和getMessage()区别,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Java集合框架ArrayList源码分析(一)

    Java集合框架ArrayList源码分析(一)

    这篇文章主要为大家详细介绍了Java集合框架ArrayList源码分析,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • java控制台实现可视化日历小程序

    java控制台实现可视化日历小程序

    这篇文章主要为大家详细介绍了java控制台实现可视化日历小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • Java欧拉函数的计算代码详解

    Java欧拉函数的计算代码详解

    这篇文章主要介绍了Java实现欧拉函数的计算,从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明,本文通过实例代码给大家介绍的很详细,需要的朋友可以参考下
    2021-05-05
  • Java 动态代理深入理解

    Java 动态代理深入理解

    这篇文章主要介绍了Java 动态代理深入理解的相关资料,需要的朋友可以参考下
    2017-03-03
  • Java的List集合中泛型使用详解

    Java的List集合中泛型使用详解

    这篇文章主要介绍了Java的List集合中泛型使用详解,泛型类,如果没有指定具体的数据类型,此时,操作类型是Object,泛型的类型参数只能是类类型,不能是基本数据类型,需要的朋友可以参考下
    2023-12-12
  • Java中异或的深入讲解

    Java中异或的深入讲解

    这篇文章主要给大家介绍了关于Java中异或的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • 详解spring中的Aware接口功能

    详解spring中的Aware接口功能

    Spring的依赖注入的最大亮点是所有的Bean对Spring容器的存在是没有意识的,我们可以将Spring容器换成其他的容器,Spring容器中的Bean的耦合度因此也是极低的,本文重点给大家介绍spring中的Aware接口,感兴趣的朋友一起看看吧
    2022-02-02
  • 如何在springboot中配置和使用mybatis-plus

    如何在springboot中配置和使用mybatis-plus

    这篇文章主要给大家介绍了关于如何在springboot中配置和使用mybatis-plus的相关资料,MyBatis Plus是MyBatis的增强版,旨在提供更多便捷的特性,减少开发工作,同时保留了MyBatis的灵活性和强大性能,需要的朋友可以参考下
    2023-11-11
  • jar包的各种启动方式超详细总结

    jar包的各种启动方式超详细总结

    jar文件是一种软件包文件格式,通常用于聚合大量的JAVA类文件,以jar为文件扩展名,下面这篇文章主要给大家介绍了关于jar包的各种启动方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04

最新评论