赞
踩
如果不满足上篇文章的eureka注册中心,那么本文记录的Nacos是不二之选。
本文主要记录Springboot基于Nacos实现配置中心
官网说明:Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
基于liunx centos7,镜像nacos/nacos-server:v2.1.0
version: '3.7' services: nacos01: image: nacos/nacos-server:v2.2.3 container_name: nacos01 # restart: always ports: - "8848:8848" - "9848:9848" #好像是2版本以后 新增了grpc的端口 位移1000 volumes: #如果想以文件形式保存 那就需要把这个映射到宿主机 - ./data:/home/nacos/data environment: - TZ=Asia/Shanghai - MODE=standalone #单点的形式 - JVM_XMS=128m # 堆内存溢出 后会导致内部data清掉 所以一定要自己保存 使用文件或者mysql - JVM_XMX=1024M #选择保存到mysql 需要建一个库nacos_config #- SPRING_DATASOURCE_PLATFORM=mysql #- MYSQL_SERVICE_HOST=192.168.168.191 #- MYSQL_SERVICE_DB_NAME=nacos_config #- MYSQL_SERVICE_PORT=3306 #- MYSQL_SERVICE_USER=root #- MYSQL_SERVICE_PASSWORD=root #- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true networks: - my-net networks: #新增的网络 内部服务名调用 my-net: external: true
如果需要配置本地数据库的可以参考这篇文章
访问http://192.168.0.221:8848/nacos/
,单点访问不需要鉴权,如果需要,那账号密码都是nacos
添加一个orderservice-dev.yaml配置,内容如下。
接下来在springboot中集成Nacos
父依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.8</version>
</parent>
springcloud版本管理包
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
nacos配置依赖
<!--引入cloud config--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <!--引入nacos config依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2021.0.4.0</version> </dependency> <!--cloud2021.x版本后 不在支持bootstrap No spring.config.import set--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
一定要注意依赖,不然很多问题
特别注意加载配置文件的顺序 bootstrap -> application
,所以不要在application.yml
写任何配置,不存在最好。新建一个bootstrap.yml
spring: application: #这个名词需要和nacos配置的一致 name: orderservice profiles: #指定环境 active: dev #指定配置名称 config: import: - optional:nacos:application.yml - optional:nacos:${spring.application.name}-${spring.profiles.active}.yml cloud: #不使用默认的config 使用nacos config: enabled: false nacos: config: server-addr: 192.168.0.221:8848 #命名空间 默认public #namespace: cms-dev #group名称 group: DEFAULT_GROUP
接下来从启动日志看下读取配置的规则:
Ignore the empty nacos configuration and get it based on dataId[orderservice] & group[DEFAULT_GROUP]
Ignore the empty nacos configuration and get it based on dataId[orderservice.yaml] & group[DEFAULT_GROUP]
Located property source: [BootstrapPropertySource {name='bootstrapProperties-orderservice-dev.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-orderservice.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-orderservice,DEFAULT_GROUP'}]
properties
后缀)最优先,orderservice.${file-extension}
orderservice-${spring.profiles.active}.${file-extension}
//开启配置动态刷新
@RefreshScope
@Slf4j
@RestController
public class OrderController {
@Value("${hello.world}")
private String hello;
@GetMapping("/test")
public String test() throws Exception {
log.info("config -- {}", hello);
return hello;
}
}
c.e.order.controller.OrderController : config -- 1345671234567887654
//修改为jack再次访问
c.e.order.controller.OrderController : config -- hello my name is jack
以上就是本章的全部内容了。
上一篇:SpringCloud第一话 – Eureka服务注册中心
下一篇:SpringCloud第三话 – 基于Nacos实现注册中心以及远程服务调用
失之东隅,收之桑榆
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。