nacos 1.4.2 + springboot 2.4.2
一、nacos 1.4.2 安装(mysql版)
准备SQL脚本
https://github.com/alibaba/nacos/blob/1.4.2/distribution/conf/nacos-mysql.sql
在数据库中创建nacos_config库 并执行SQL脚本
拉取镜像 nacos 1.4.2
docker pull nacos/nacos-server:1.4.2
启动 nacos
docker run -d \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql服务器IP \
-e MYSQL_SERVICE_PORT=mysql端口 \
-e MYSQL_SERVICE_USER=mysql用户名 \
-e MYSQL_SERVICE_PASSWORD=mysql密码 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-p 8848:8848 \
--name nacos \
--restart=always \
nacos/nacos-server:1.4.2
访问 nacos 登录信息:nacos/nacos
http://服务器IP:8848/nacos
杂七杂八配置
1、针对当前项目创建一个命名空间
2、在命名空间下创建多个配置文件(推荐格式:应用名字-环境.yaml,比如:dispatchserver-dev.yaml/dispatchserver-test.yaml/dispatchserver-prod.yaml)
二、整合springboot (版本:2.4.2)
springboot 2.4.2版本比较特殊,需要对bootstrap.yml文件做特殊处理
1、整合配置中心
pom.xml 增加下面依赖
<properties>
<spring.cloud-version>2020.0.1</spring.cloud-version>
<spring.cloud.alibaba.version>2021.1</spring.cloud.alibaba.version>
</properties>
... ...
<dependencies>
<!-- Nacos 组件依赖 -->
<!-- 通过bootstrap.yml配置文件生效,需要引入spring-cloud-starter-bootstrap -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- nacos config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在resources目录下增加bootstrap.yml文件
spring:
application:
# 应用名字
name: dispatchserver
# nacos配置
cloud:
nacos:
config:
# nacos地址
server-addr: nacos服务器IP:8848
# 命名空间
namespace: c438cc07-****-4a2c-****-479b6a75c925
# 分组
group: DEFAULT_GROUP
# 配置文件后缀
file-extension: yaml
# 是否开启自动刷新
auto-refresh: true
nacos+springboot实现配置中心+自动刷新
方式一 使用@Value注解
@RestController
@RequestMapping("/api")
@RefreshScope //@Value要和RefreshScope一起使用才能实现自动刷新
public class MyApiController {
@Value("${username}")
private String username;
@AnonymousAccess
@GetMapping(value = "/getData")
public JSONObject getData() {
return new JSONObject().fluentPut("username", username);
}
}
方式二 使用配置类(推荐使用)
创建配置类MyProperties
@Data
@Component
@ConfigurationProperties
public class MyProperties {
private Integer initTtl;
}
使用配置类MyProperties
@RestController
@RequestMapping("/api")
@RequiredArgsConstructor
public class MyApiController {
private final MyProperties myProperties;
@AnonymousAccess
@GetMapping(value = "/getData")
public JSONObject getData() {
return new JSONObject().fluentPut("username", myProperties.getUsername());
}
}