Spring Cloud Alibaba 1 nacos搭建
安装启动nacos
- 下载
- 解压
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz cd nacos/bin
- 启动
Linux/Unix/Mac 启动命令(standalone代表着单机模式运行,非集群模式): sh startup.sh -m standalone 如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行: bash startup.sh -m standalone Windows 启动命令(standalone代表着单机模式运行,非集群模式): startup.cmd -m standalone
- 控制台
localhost:8848/nacos/index.html - 关闭
Linux/Unix/Mac sh shutdown.sh Windows shutdown.cmd
编码
启动配置管理
创建项目
- 创建父maven项目,配置pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.zzz</groupId> <artifactId>zwq-cloud</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <properties> <java.version>1.8</java.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <!-- Spring Cloud --> <spring.cloud.version>Hoxton.SR12</spring.cloud.version> </properties> <modules> <module>nacos</module> </modules> <dependencyManagement> <dependencies> <!-- Spring Dependencies --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.3.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <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>2.2.1.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>
- 创建子项目(springboot) nacos,pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.zzz</groupId> <artifactId>zwq-cloud</artifactId> <version>1.0-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> <groupId>com.zzz</groupId> <artifactId>nacos</artifactId> <version>0.0.1-SNAPSHOT</version> <name>nacos</name> <description>Demo project for nacos</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.0.3</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
注:项目需要使用bootstrap.yml作为配置文件(application.properties不生效),需要添加依赖(上面的artifactId: spring-cloud-starter-bootstrap)
项目结构
nacos创建配置文件
- 进入控制台 http://localhost:8848/nacos/index.html
- 添加配置文件
Data Id/Group/内容如下: pped-ok.yml PPED_GROUP : user: username: 'zwq3' pass: 'zwqzwq3' pped-1.yml PPED_GROUP : msg: content: '内容3' time: 'today3' pped.yml PPED_GROUP : dd: content: '默认3'
项目创建配置文件
application.properties:
server.port=18084
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
bootstrap.yml:
spring:
application:
# 服务名
name: pped
cloud:
nacos:
config:
# 是否开启配置中心 默认true
enabled: true
# 配置中心地址
server-addr: 127.0.0.1:8848
# 配置文件后缀
file-extension: yml
# 配置对应的分组
group: PPED_GROUP
# 命名空间 常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
# namespace: ba42e722-81aa-48f1-9944-9dca57d5f396
# Nacos 认证用户
username: nacos
# Nacos 认证密码
password: nacos
# 支持多个共享 Data Id 的配置,优先级小于extension-configs,自定义 Data Id 配置 属性是个集合,内部由 Config POJO 组成。Config 有 3 个属性,分别是 dataId, group 以及 refresh
shared-configs[0]:
data-id: pped-ok.yml # 配置文件名-Data Id
group: PPED_GROUP # 默认为DEFAULT_GROUP
refresh: true # 是否动态刷新,默认为false
shared-configs[1]:
data-id: pped-1.yml # 配置文件名-Data Id
group: PPED_GROUP # 默认为DEFAULT_GROUP
refresh: true # 是否动态刷新,默认为false
refresh-enabled: true
项目写代码测试是否能获取配置文件内容
TestController:
/**
* description: 测试
*
* @author zwq
* @date 2022/4/11 15:50
*/
@RestController
@RequiredArgsConstructor
// 刷新配置文件
@RefreshScope
public class TestController {
private final UserDO userDO;
private final NacosConfigManager nacosConfigManager;
private final Environment environment;
@Value("${msg.content}")
String content;
@Value("${msg.time}")
String time;
@Value("${dd.content}")
String dd;
@Value("${user.username}")
String userName;
@Value("${user.pass}")
String pass;
@GetMapping("test")
public String test() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(userName + " ").append(pass + " ");
stringBuilder.append(content + " ").append(time + " ");
stringBuilder.append(dd + " ");
System.out.println(userDO.getUsername() + userDO.getPass());
System.out.println(nacosConfigManager.getConfigService());
System.out.println(nacosConfigManager.getNacosConfigProperties());
System.out.println(environment.getProperty("pped-ok.yml"));
System.out.println(environment.getProperty("pped-test"));
return stringBuilder.toString();
}
}
启动服务发现
- 添加依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
- 添加配置
spring: application: # 服务名 name: pped cloud: nacos: discovery: server-addr: 127.0.0.1:8848 group: PPED_GROUP
- 启动类增加注解
@EnableDiscoveryClient - 控制台便能看到服务列表