上一篇文章《微服务实战spring cloud tencent系列(六)Spring Cloud Tencent 配置中心介绍》我们粗略的介绍了下北极星上的配置中心,这篇文章我们实战下spring cloud tencent使用北极星上的配置中心。
一、创建服务分组
和前面说的一样,我们首先创建对应的服务分组,这里我们还是使用user-service来进行演示,因此这里我们创建一个user-service的配置分组,名称空间选择shop
二、引入spring cloud tencent config依赖
这里还是使用前面的shop-server项目来进行演示,因此我们在user-service项目的pom引入:
<dependency> <groupId>com.tencent.cloud</groupId> <artifactId>spring-cloud-starter-tencent-polaris-config</artifactId> </dependency>
三、添加polaris的配置中心配置信息
引入了依赖之后,我们在user-service项目的src/main/resources目录下的bootstrap.yml文件中加入spring cloud tencent config的配置,示例如下:
spring: application: name: user-service cloud: polaris: address: grpc://192.168.31.218:8091 namespace: shop config: address: grpc://192.168.31.218:8093 # 选填,只有在配置中心和注册中心是两个不同的地址时才需要配置 auto-refresh: true # 选填,当配置发布后,动态刷新 Spring 上下文,默认值为 true
这里主要是添加上config的address和auto-efresh即可,很简单的配置。
四、创建配置文件
接着我们进入到北极星的ui界面,在user-service这个配置分组里面创建一个application.yml配置文件
然后在这个application.yml配置文件中随便填写一些配置信息。
然后把这个配置发布。
五、编写代码获取配置信息
这里在配置中心我们配置了内容之后,我们就可以在项目里面获取到对应的配置了,这里我们编写一个controller来测试获取下:
package org.user.service.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { @Value("${user.username:lisi}") private String name; @Autowired private User user; @RequestMapping("/test") public String hello() { return "hello " + name + " p: "+user.getPassword() ; } }
说明:
1、这里我们获取配置使用的是${Value}这个标签,在冒号后面,我们填写的是一个默认值,也就是当没有读取到对应的配置的话,就使用这个默认值。
2、除了上面的$Value{}标签获取配置值,我们还可以使用@ConfigurationProperties注解来获取值,例如我们获取上面的配置,我们可以自定义一个类,然后使用@ConfigurationProperties注解来获取配置信息,代码示例如下:
package org.user.service.model; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "user") @RefreshScope // 如果使用反射模式,则不需要加这个注解 public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
然后我们测试下效果:
可以看到两种方式都获取到了配置信息。
最后按照惯例,附上本案例的源码,登录后即可下载。
还没有评论,来说两句吧...