搭建SpringBoot项目
加入依赖
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
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 的完整格式为: {spring.profile.active}.${file-extension}。
- ${prefix} 的值默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
- **{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
注意: {NACOS}这个两个配置是启动配置,分别对应着 加载环境,例如 dev, Nacos 地址,例如 47.105.198.54:8848。