spring-cloud构架微服务(2)-全局配置二
接上篇,实际项目中,可能会遇到有些配置项,例如:邮件地址、手机号等在服务已经上线之后做了改动(就当会出现这种情况好了)。然后你修改了配置信息,就得一个一个去重启对应的服务。spring-全局配置提供了一种热部署机制,可以在重启工程的前提下改变内存中配置项的值。
还是中client-config项目,首先我们要再添加一个jar引用:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
这个监控包,包含了/refresh的api接口,接受post方法。
上篇中的UserController类,我们只要在上面加入@RefreshScope这个注解,那么里面的 testProperty 这个属性值就会被动刷新。
package com.bing.User; import com.bing.model.User; import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import java.util.Date; /**
* Created by szt on 2016/11/18.
*/
@RestController
@RefreshScope
public class UserController {
@Value("${bing.for.test}")
private String testProperty; @RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
public User getUser(@PathVariable("id") String id) {
User user=new User();
user.setName(testProperty);
user.setId(id);
user.setCreatedTime(new Date());
return user;
}
}
bingyulei007
这个刷新需要手动请求。
当我们启动配置服务器(上一篇中的configserver),然后启动client工程,访问路径http://localhost:8081/user/id1返回:
{
"id": "id1",
"name": "hello-word",
"createdTime": "2016-11-18 15:41:38"
}
bingyulei007
我们更改配置文件中属性值
bing.for.test=new-hello
然后调用地址http://localhost:8081/refresh,之后这个节点上的属性值就会被刷新。验证效果,访问路径http://localhost:8081/user/id1返回:
{
"id": "id1",
"name": "new-hello",
"createdTime": "2016-11-18 16:03:22"
}
bingyulei007
说明属性已经被刷新。但是实际随着项目的完善,我们后端可能会部署多个模块,每个模块也可能采用集群部署,我们不能傻傻的每个节点都去维护一个刷新。还好spring-cloud为我们提供了spring-bus模块,这个模块要依赖于服务发现机制,我们后面再说明。
spring-cloud构架微服务(2)-全局配置二的更多相关文章
- spring-cloud构架微服务(1)-全局配置
使用spring-cloud是基于熟悉springboot基础上进行的.本篇介绍全局配置,spring-boot版本就以1.4.0来做吧.项目地址: https://git.oschina.net/b ...
- Spring Cloud搭建微服务架构----文章汇总
Spring Cloud搭建微服务架构----前言 原文地址:https://my.oschina.net/u/1000241/blog/882929 Spring Cloud搭建微服务架构----使 ...
- Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】
转载:http://blog.didispace.com/spring-cloud-starter-dalston-6-2/ 原创 2017-08-26 翟永超 Spring Cloud 被围观 ...
- Spring Cloud构建微服务架构(一)服务注册与发现
Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...
- 【微服务】使用spring cloud搭建微服务框架,整理学习资料
写在前面 使用spring cloud搭建微服务框架,是我最近最主要的工作之一,一开始我使用bubbo加zookeeper制作了一个基于dubbo的微服务框架,然后被架构师否了,架构师曰:此物过时.随 ...
- Spring Cloud与微服务构建:Spring Cloud简介
Spring Cloud简介 微服务因该具备的功能 微服务可以拆分为"微"和"服务"二字."微"即小的意思,那到底多小才算"微&q ...
- Spring Cloud与微服务构建:微服务简介
Spring Cloud与微服务构建:微服务简介 单体架构及其不足 1.单体架构简介 在软件设计中,经常提及和使用经典的3曾模型,即表示层.业务逻辑层和数据访问层. 表示层:用于直接和用户交互,也成为 ...
- 第1章 Spring Cloud 构建微服务架构(一)服务注册与发现
一.Spring Cloud 简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总 ...
- Spring Cloud Alibaba | 微服务分布式事务之Seata
Spring Cloud Alibaba | 微服务分布式事务之Seata 本篇实战所使用Spring有关版本: SpringBoot:2.1.7.RELEASE Spring Cloud:Green ...
随机推荐
- bashrc 与 profile 环境变量
profile 和 bashrc profile只在登陆的时候使用一次(当我们使用远程登陆上),而bashrc在每次新打开一个bash的时候都会执行(相当于path环境(登陆上了每次打开终端)) pr ...
- Nginx01---简单使用
基于腾讯云--ubuntu系统 1.安装nginx sudo apt-get install nginx 2.启动,停止nginx nginx -c /usr/local/nginx/conf/ngi ...
- ubuntu14 上无法使用vim命令的解决方法
在ubuntu14.10终端输入vim: The program 'vim' can be found in the following packages: * vim * vim-gnome * v ...
- P3348 [ZJOI2016]大森林(LCT)
Luogu3348 BZOJ4573 LOJ2092 题解 对于每个\(1\)操作建一个虚点,以后的\(0\)操作都连在最近建好的虚点上.这样每次整体嫁接的时候,直接把这个虚点断掉它原来的父亲,再\( ...
- 权限知识中的AIX ACL
Aix ACL是对标准权限位的扩展.通过修改分配给个人或组的标准权限,对每个文件或目录进行更精细的控制. 对每个组或用户,有3种权限分配情况: PERMIT : 准许对文件或目录的特定权限. DEMY ...
- NorFlash基础
1. Nor Flash 简介 Nor Flash 闪速存储器具有可靠性高.随机读取速度快的优势,在擦出和编程操作较少而直接执行代码的场合,尤其是纯代码存储的应用中广泛使用. 2. Nor Flash ...
- 云数据库 Redis 缓存 PHP session 变量
1.安装 phpredis 扩展. wget https://github.com/nicolasff/phpredis/archive/master.zip unzip master.zip cd ...
- python3 迭代器笔记
#迭代器import syslist=[1,2,3,4]it=iter(list)while True: try: print(next(it)) except StopIteration: sys. ...
- java——修改txt文件中某一行的内容
今天无意间看到java.io中有一个类:RandomAccessFile,可以在文件的任意位置进行读写操作,想到我之前写的一个小项目,想在txt中修改某一行的内容,都是从头遍历txt文件,修改这一行的 ...
- requirej入门(二)
requirejs中的一些基本知识,包括API使用方式等. 基本API require会定义三个变量:define,require,requirejs,其中require === requirejs, ...