SpringBoot与Nacos整合
2020-12-03 本文已影响0人
程序员小杰
上一篇笔者已经介绍怎么安装Nacos了,这篇就开始重头戏。
搭建SpringBoot项目
image.png一、加入依赖
<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页面选择配置管理,创建配置文件
image.png
这里主要配置三个东西,Data ID、Group 以及要配置的内容。
Data Id 的格式是 ${prefix}-${spring.profile.active}.${file-extension}
${prefix}
的值,默认为 spring.application.name 的值
${spring.profile.active}
表示项目当前所处的环境
${file-extension}
表示配置文件的扩展名
笔者配置:
Data Id:naocs-service-dev.yaml
Group :dev
-
新建命名空间
image.png
提供测试的Controller
@RestController
@RefreshScope #动态刷新
public class HelloController {
@Value("${name}")
private String name;
@GetMapping
public String hell(){
return name;
}
}
然后调用接口:http://localhost:8080/hello
image.png注册中心
将nacos-discovery依赖注释放开
在nacos节点下增加配置
discovery:
server-addr: 47.105.198.54:8848
group: ${spring.profiles.active}
namespace: mall
启动项目,登录nacos。可以看到服务管理 -》服务列表中有注册上来的服务的相关信息。
image.png
注:如果配置中心与当前应用的配置文件都配置了相同的key,优先使用配置中心的配置。
加载多个配置文件
在实际开发中,我们不可能将所有的配置同时放在同一个配置文件中,那样会显得多而有杂。
-
示例配置 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