SpringCloud服务注册中心Nacos和Feign调用服务

SpringCloud服务注册中心Nacos

下载地址

1.解压后运行bin目录下的startup.cmd

2.访问Nacos

进入登录页面http://localhost:8848/nacos/

默认账号密码都是nacos

3.因为我需要在一个项目中调用另外一个项目的方法,也就是模块开发,所以需要把两个服务注册到nacos中
4.引入依赖
<!--服务注册-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
5.在项目application.properties中加入配置
# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
6.启动类添加注解

7.显示

Feign调用服务

1.导入依赖
<!--服务调用-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.在调用端的启动类添加注解
@EnableFeignClients

3.在调用端,创建interface方法,使用注解指定调用服务名称,定义调用方法路径

import com.mine.guli.commonutils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;

@Component
@FeignClient("service-vod") //注册中心服务的名字
public interface VodClient {

    //定义调用方法的路径
    //删除阿里云视频
    //@PathVariable一定要注意名称,否则会出错
    @DeleteMapping("/eduvod/video/removeAlyVideo/{id}")
    public R removeAlyVideo(@PathVariable("id") String id);

}
4.Controller层注入service方法

	@Autowired
    private VodClient vodClient;


	@DeleteMapping("/{id}")
    public R deleteVideo(@PathVariable String id){
        //根据小节id获取视频id,调用实现删除
        EduVideo eduVideo = videoService.getById(id);
        String videoSourceId = eduVideo.getVideoSourceId();

        //判断小节里面是否有视频id
        if(!StringUtils.isEmpty(videoSourceId)){
            //根据视频id删除,远程调用实现视频删除
            vodClient.removeAlyVideo(videoSourceId);
        }
        //删除小节
        videoService.removeById(id);
        return R.ok();
    }
Spring Cloud 是一个基于 Spring Boot 的框架,用于快速构建分布式系统的通用工具集。Nacos 是阿里巴巴开源的注册中心和配置中心,而 Feign一个声明式的 HTTP 客户端,使得编写 Web 服务客户端变得更加简单。 下面是 Spring Cloud 项目搭建,并整合 NacosFeign 组件的步骤: 1. 创建父工程,添加以下依赖: ``` <dependencyManagement> <dependencies> <!-- Spring Cloud --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2020.0.1</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.4.4</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ``` 2. 创建子工程,添加以下依赖: ``` <!-- Nacos 注册中心和配置中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.3.RELEASE</version> </dependency> <!-- Feign 声明式 HTTP 客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>3.0.2</version> </dependency> ``` 3. 在子工程的启动类上添加注解 `@EnableDiscoveryClient` 和 `@EnableFeignClients`,分别启用服务注册与发现和 Feign 组件。 ``` @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 4. 配置 Nacos 注册中心和配置中心的地址,可以在 `application.properties` 文件中添加以下配置: ``` # Nacos 注册中心和配置中心地址 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 ``` 5. 创建 Feign 接口,使用 `@FeignClient` 注解指定要调用服务名称和请求路径。 ``` @FeignClient(name = "service-provider") public interface HelloFeignClient { @GetMapping("/hello") String hello(); } ``` 6. 在需要使用 Feign 的地方注入 `HelloFeignClient` 对象,即可调用服务提供者的 `/hello` 接口。 ``` @RestController public class HelloController { @Autowired private HelloFeignClient helloFeignClient; @GetMapping("/hello") public String hello() { return helloFeignClient.hello(); } } ``` 至此,Spring Cloud 项目已经搭建完成,并整合了 NacosFeign 组件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值