springboot整合Nacos
一 实现Nacos的配置中心
1.1 创建一个maven项目,添加依赖,删除src文件
<groupId>com.qc.cloud.demo</groupId>
<artifactId>cloud-master</artifactId>
<version>1.0</version>
<modules>
<module>cloud-config</module>
<module>cloud-regist</module>
<module>cloud-consumer</module>
</modules>
<packaging>pom</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR4</spring-cloud.version>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<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>2.2.3.RELEASE</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-test</artifactId>
<scope>test</scope>
</dependency>
<!-- lombok依赖 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<!-- devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
1.2 新建nacos-config模块,新增依赖
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
1.3 在resource文件夹下新建bootstrap.yml文件,配置nacos集群
##项目端口
server:
port: 10010
spring:
application:
#指定当前服务名字
name: nacos-config
cloud:
nacos:
#连接Nacos集群
config:
##集群代理地址(nginx代理地址)
server-addr: 192.168.92.145:80
##名称
name: ${spring.application.name}
##nacos配置中的namespace
namespace: 65cc6807-1077-44c9-aabe-289a2d4c5be2
##文件后缀
file-extension: yml
##群组
group: DEFAULT_GROUP
1.4 新建一个controller类来做接口测试
@RestController
@RequestMapping("config")
@RefreshScope
public class ConfigController {
@Value("${name}")
private String name;
@GetMapping("/refresh")
public String getConfigName(){
return "your name is:"+name;
}
}
1.5 在nacos配置中心进行配置管理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-STjdKyeL-1652431064023)(https://raw.githubusercontent.com/linglongQaQ/cloudimg/master/img/image-20220216174516349.png)]
##通过修改name的值,请求接口地址,name值时动态变化的
http://localhost:10012/config/refresh=
二 实现nacos的服务注册
2.1 新建一个模块,修改pom文件
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
2.2 新建一个项目的配置文件
## 端口
server:
port: 10011
## 项目名
spring:
application:
name: nacos-regist
cloud:
nacos:
discovery:
##nacos地址
server-addr: 192.168.92.145:80
##命名空间
namespace: 65cc6807-1077-44c9-aabe-289a2d4c5be2
2.3 启动项目,在nacos的控制台中发现多了一个服务,表明服务注册成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N9yp1yQi-1652431064024)(https://raw.githubusercontent.com/linglongQaQ/cloudimg/master/img/image-20220216180302097.png)]
三 实现nacos的服务消费
3.1 新建一个模块,修改pom文件
<!-- 服务发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 服务调用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
3.2 新建项目配置文件
server:
port: 10012
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: 192.168.92.145:80
namespace: 65cc6807-1077-44c9-aabe-289a2d4c5be2
3.3 在注册服务nacos-regist中新增一个测试接口
@RestController
@RequestMapping("regist")
public class NacosRegisterController {
@GetMapping("say")
public String sayHi(@RequestParam String name){
return "Hi "+ name;
}
}
3.4 在服务消费端新增一个服务发现的client
// 服务名称为服务注册模块的名称
@FeignClient("nacos-regist")
public interface NacosFeignClient {
//路径为3.3测试接口的路由
@GetMapping("regist/say")
String say(@RequestParam String name);
}
3.5 服务调用
@RestController
@RequestMapping("consumer")
public class NacosConsumerController {
@Autowired
private NacosFeignClient nacosFeignClient;
@RequestMapping("cus")
public String hello(@RequestParam String name){
return nacosFeignClient.say(name);
}
}
3.6 接口测试
http://localhost:10012/consumer/cus?name=jack
注意:
1.springboot 的版本最好不要低于nacos版本,否则会报错
2.springcloud 版本需要进行适配
3.feign 在传递参数的过程中,有@RequestBody,@RequestParam两种参数类型的注解,是必填项,和springmvc不同,不能进行默认
.say(name);
}
}
3.6 接口测试
```http
http://localhost:10012/consumer/cus?name=jack
注意:
1.springboot 的版本最好不要低于nacos版本,否则会报错
2.springcloud 版本需要进行适配
3.feign 在传递参数的过程中,有@RequestBody,@RequestParam两种参数类型的注解,是必填项,和springmvc不同,不能进行默认