好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

详解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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<!--服务中心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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

#服务名称

  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 注解

?

1

2

3

4

5

6

7

8

@springbootapplication

@enableconfigserver

public class configserverapplication {

 

public static void main(string[] args) {

springapplication.run(configserverapplication. class , args);

   }

}

3、product-service微服务

1、pom.xml

?

1

2

3

4

5

6

7

8

9

10

<!--服务中心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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#指定注册中心地址

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类(测试用)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

@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 进入断点。

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

原文链接:http://www.cnblogs.com/qdhxhz/p/9624386.html

查看更多关于详解SpringCloud mysql实现配置中心的详细内容...

  阅读:49次