(3)编写启动类
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class,args);
}
}
- @EnableConfigServer : 通过此注解开启注册中心服务端功能
(4)设置配置文件
在这之前复制一下Git请求的服务器的地址
server:
port: 10001 #服务端口
spring:
application:
name: config-server #指定服务名
cloud:
config:
server:
git:
uri: https://gitee.com/itbluebox/config-repostory.git
(5)启动服务进行测试
运行成功
访问测试:http://localhost:10001/product-dev.yml
(1)修改product_service
1)引入依赖
org.springframework.cloud
spring-cloud-starter-config
2)删除application.yml
springboot的应用配置文件,需要通过Config-server获取,这里不再需要。
spring:
cloud:
config:
name: product #应用名称需要对应Git中配置文件的名称的前半部分
profile: dev #开发环境
label: master #git当中的分支
uri: http://localhost:10001 #config-server的请求地址
3)运行测试
访问:http://localhost:9001/product/1
访问:http://localhost:9001/product/test
4)修改配置文件然后在运行测试
将dev修改为pro
spring:
cloud:
config:
name: product #应用名称需要对应Git中配置文件的名称的前半部分
profile: pro #开发环境
label: master #git当中的分支
uri: http://localhost:10001 #config-server的请求地址
重新启动运行
请求的端口改变了
访问:http://localhost:9002/product/1
(1)问题解析
我们已经在客户端取到了配置中心的值,
修改Gitee上的值
修改内容
访问:http://localhost:9002/product/test
但当我们修改Gitee上面的值时,
服务端(Config Server)能实时获取最新的值,但客户端(Config Client)读的是缓存,无法实时获取最新值。
SpringCloud已经为我们解决了这个问题,那就是客户端使用post去触发refresh,获取最新数据,需要依赖spring-boot-starter-actuator
(2)引入依赖
org.springframework.boot
spring-boot-starter-actuator
(3)在ProductController
类加上@RefreshScope
@RestController
@RequestMapping(“/product”)
@RefreshScope //代表的是开启动态刷新
public class ProductController {
@Autowired
private ProductService productService;
@Value(“${server.port}”)
private String port;
@Value(“${spring.cloud.client.ip-address}”)
private String ip;
@Value(value = “${name}”)
private String name;
@RequestMapping(value = “/{id}”, method = RequestMethod.GET)
public Product findById(@PathVariable Long id) {
Product product = productService.findByID(i