日积月累,水滴石穿 😄
上一篇笔者已经介绍怎么安装 Nacos 了,文章地址:安装Nacos。这篇就开始重头戏。
搭建SpringBoot项目
加入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
nacos-config
这个依赖就相当于SpringCloud Config
,nacos-discovery
这个依赖就相当于Eureka
。
配置中心
先将nacos-discovery依赖进行注释,先来实现config
在项目中创建bootstrap.yml
文件,加入以下配置:
spring:
application:
#服务名称
name: naocs-service
profiles:
active: dev
cloud:
nacos:
config:
# 配置文件的环境
group: ${spring.profiles.active}
# 配置文件的格式
file-extension: yaml
# 配置中心的地址
server-addr: 47.105.198.54:8848
# 配置文件prefix
prefix: ${spring.application.name}
#命名空间
namespace: mall
然后登录 nacos,在 nacos 页面选择配置管理,创建配置文件
这里主要配置三个东西,DataID、Group 以及要配置的内容。
Data Id 的完整格式为: ${prefix}-${spring.profile.active}.${file-extension}
。
${prefix}
的值默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。${spring.profile.active}
: 即为当前环境对应的profile
, 注意:当spring.profiles.active
为空时,对应的连接符 - 也将不存在,DataID 的拼接格式变成${prefix}.${file-extension}
。${file-extension}
表示配置文件的扩展名,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。
Group 也就是分组,本文里也就是按照环境进行划分。比如 dev、test、uat。
笔者配置:
- Data Id:naocs-service-dev.yaml
- Group :dev
- 新建命名空间
提供测试的 Controller
@RestController
@RefreshScope // 动态刷新
public class HelloController {
@Value("${name}")
private String name;
@GetMapping
public String hell(){
return name;
}
}
然后调用接口:http://localhost:8080/hello
注册中心
将nacos-discovery依赖注释放开
。
然后在bootstrap.yml
文件的nacos
节点下增加如下配置:
discovery:
server-addr: 47.105.198.54:8848
group: ${spring.profiles.active}
namespace: mall
启动项目,登录nacos。可以看到 服务管理 -》服务列表中有注册上来的服务的相关信息。
加载多个配置文件
在实际开发中,我们不可能将所有的配置同时放在同一个配置文件中,那样会显得多而有杂。
product-dev.yaml
新建product-dev.yaml
文件,当然也可以使用上面那个文件。
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
#MySQL配置
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://47.105.198.54:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: xxxx
jackson:
date-format: yyyy-MM-dd HH:mm:ss #如果使用字符串表示,用这行设置格式
timezone: GMT+8
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
接下来笔者会将product-dev.yaml
里的配置拆分出来成为datasource-dev.yaml
、mybatis-plus-dev.yaml
。
datasource-dev.yaml
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
# MySQL配置
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://47.105.198.54:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: xxxx
mybatis-plus-dev.yaml
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
然后在应用程序的bootstrap.yml
里的config
节点下增加配置:
spring:
profiles:
active: ${DEPLOY_ENV}
application:
name: product
cloud:
nacos:
config:
group: ${spring.profiles.active}
file-extension: yaml
server-addr: ${NACOS}
prefix: ${spring.application.name}
namespace: ${nacos.client.namespace}
extension-configs:
- dataId: datasource-${spring.profiles.active}.yaml
group: ${spring.profiles.active}
#是否自动刷新
refresh: true
- dataId: mybatis-plus-${spring.profiles.active}.yaml
group: ${spring.profiles.active}
refresh: true
注意: ${DEPLOY_ENV}
、${NACOS}
这个两个配置是启动配置,分别对应着 加载环境,例如 dev, Nacos 地址,例如 47.105.198.54:8848。
如你对本文有疑问或本文有错误之处,欢迎评论留言指出。如觉得本文对你有所帮助,欢迎点赞和关注。