序
运行版本
- springboot: 2.2.8.RELEASE
- springcloud: Hoxton.SR12
- nacos: 2.1.0.RELEASE
- springcloudalibaba: 2.1.0.RELEASE
下载及网站
- 百度网盘:链接:https://pan.baidu.com/s/11_xm6IfAMn2496_LykxP2Q
提取码:naco - Nacos官网:https://nacos.io/zh-cn/docs/quick-start.html
- Nacos下载-github:https://github.com/alibaba/nacos/releases
- gitee 2.1:https://gitee.com/grey-hat/nacos/tree/2.1.0
- Spring Cloud Alibaba官网:https://spring-cloud-alibaba-group.github.io/github-pages/2021/en-us/index.html#_introduction
Alibaba版本的出现是因为Eureka停更,它对SpringCloud进行了实现升级(中心和外围右上角),并集成了阿里云的其他服务(最外围左下角)
nacos启动
将bin目录下的 startup.cmd 文件中 28行的 cluster 修改为 standalone后启动
rem set MODE="cluster" Cluster mode
rem "standalone" standalone mode
set MODE="standalone"
点击启动即可
访问路径
快速体验
pom
父工程
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.2.8.RELEASE</spring-boot.version>
<latest.version>2.1.0.RELEASE</latest.version>
<spring-cloud.version>Hoxton.SR12</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- nacos 依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${latest.version}</version>
</dependency>
<!-- springcloud alibaba 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<!-- springcloud 依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- springboot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
子工程
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- nacos 注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- nacos config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
</dependencies>
nacos配置
-
登录
-
发布 (发布完毕后需要重启nacos)
-
配置 bootstrap.yaml (注意:名字必须是这个)
spring: application: name: nacos-provider profiles: active: dev # 开发环境 cloud: nacos: discovery: server-addr: 192.168.0.145:8848 config: server-addr: 192.168.0.145:8848 file-extension: yaml # 配置公式 # ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
-
编写 NacosTestController
@RestController public class NacosTestController { @Value("${pursue.name}") private String name; @GetMapping("/echo") public String echo() { return "获取nacos中的信息 -> " + name ; }
-
访问网站测试
nacos 动态刷新
Nacos Confg 支持标准 Spring Cloud @RefreshScope特性,即应用订阅某个 Nacos 配置后,当配置内容变化时,Refresh Scope Beans 中的绑定配置的属性将有条件的更新。
所谓的条件是指 Bean 必须:
-
必须条件:Bean 的声明类必须标注 @RefreshScope
-
二选一条件:
-
属性(非 static 字段)标注 @Value
-
@RefreshScope public class NacosTestController { @Value("${pursue.name}") private String name; }
-
-
@ConfigurationPropertiesBean
-
@ConfigurationProperties注解到普通类然后通过@EnableConfigurationProperties定义为bean
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
-
@ConfigurationProperties(perfix = "pursue") @Component @Data @AllArgsConstructor @NoArgsConstructor public class Pursue(){ // 与nacos中定义的属性名需要一致 private String name; } // ------------------------------ @EnableConfigurationProperties({Pursue.class}) public class NacosTestController { @Autowired private Pursue pursue; @GetMapping("/echo") public String echo() { return "获取nacos中的信息 -> " + pursue.getName() ; } }
-
-
-
更新 nacos 服务端中的数据即可
-
pursue: name: autoUpt nacos
-
注解实现原理解析:https://blog.csdn.net/andy_zhang2007/article/details/88236454