配置中心详情
以项目名称命名的配置文件:test.properties
新建配置
创建服务
1.引入依赖:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--nacos config配置中心依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- cloud-dubbo依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
</dependencies>
2、创建配置文件名为bootstrap.yml,注意是bootstrap.xxx,而不是application或者其他。原因如下
Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application
spring:
application:
#服务名称
name: nacos-config
cloud:
nacos:
discovery:
#连接注册中心 指定注册中心的地址,如果你不需要注册该服务,也可以去掉该项,
server-addr: 192.168.230.136:8848
#连接配置 指定配置中心的地址
config:
server-addr: 192.168.230.136:8848
file-extension: yml
ext-config:
- data-id: test.properties
group: DEFAULT_GROUP
refresh: true
dubbo:
scan:
base-packages: com.jq.service
protocol:
name: dubbo
port: 19004
registry:
address: spring-cloud:// 192.168.230.137:8848
启动类加注解:
package com.fh;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigApplication.class, args);
}
}
创建控制层进行测试
package com.fh.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("config")
@RefreshScope //使当前类下的配置支持动态更新
public class NacosConfigController {
@Value("${consumer.name}")//读取key为nacosconfig的配置的值
private String consumerName ;
@Value("${age}")
private String age ;
@RequestMapping("/getValue")
public String getValue() {
return consumerName+age;
}
}
在浏览器访问 http://localhost:10002/config/getValue