SpringCloud -- 集成

本文介绍了如何在SpringCloud项目中集成Nacos Config进行配置管理,并结合OpenFeign实现服务间的调用。首先,展示了项目的依赖配置,包括SpringBoot、SpringCloud和Alibaba Nacos的相关版本。接着,详细讲解了OpenFeign的引入和配置,包括启用注解、设置服务注册中心地址以及创建Feign接口。最后,提到了Nacos Config的引入,强调了在bootstrap.properties中配置Nacos服务器地址和应用名的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringCloud -- 集成

前言

目前版本配置如下


   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.7</version>
        <relativePath/>
    </parent>


   <properties>
        <spring-cloud.version>2021.0.2</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
        <mybatis-plus>3.5.1</mybatis-plus>
    </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>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>


            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus}</version>
            </dependency>
        </dependencies>

openFeign

引入依赖

      <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>


 	  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
       </dependency>

开启注解 发现 远程调用

@EnableFeignClients(basePackages = "com.atsc.demo.feign")
@EnableDiscoveryClient
@SpringBootApplication

配置注册中心地址

spring:
  cloud:
    nacos:
      discovery:
        server-addr: http://主机地址:默认端口8848
  application:
    name: nacos 上显示的服务应用名称

创建外部依赖包 feign


@FeignClient("nacos 服务名称")
public interface ScFeignService {
	// 外部服务接口  外部服务全限定路由
    @RequestMapping("/list")
    R memeberCoupons();
}

注入使用


引言


/**
 * 接口注释声明具有该接口的 REST 客户端应该是
 * 创建(例如,用于自动装配到另一个组件中)。如果 SC LoadBalancer 可用
 * 用于对后端请求进行负载均衡,负载均衡器可以是
 * 使用与 feign 客户端相同的名称(即值)进行配置。
 *
 * @作者斯宾塞·吉布
 * @作者维尼尔诺罗尼亚
 * @作者奥尔加·马西亚泽克-夏尔马
 */

@interface FeignClient {

/**
* 带有可选协议前缀的服务名称。 {@link #name() 的同义词
* 姓名}。必须为所有客户端指定名称,无论是否提供 url。
* 可以指定为属性键,例如:${propertyKey}。
* @return 带有可选协议前缀的服务名称
*/
@AliasFor("name")
	String value() default "";  //常用


/**
* 如果存在,这将用作 bean 名称而不是名称,但不会被使用
* 作为服务 ID。
* @return bean 名称而不是 name 如果存在
*/
	String contextId() default "";

/**
* @return 带有可选协议前缀的服务 ID。 {@link #value() 的同义词
* 价值}。
*/
@AliasFor("值")
	String name() default "";



/**
* @return feign 客户端的 <code>@Qualifiers</code> 值。
*
* 如果 {@link #qualifier()} 和 {@link #qualifiers()} 都存在,我们将使用
* 后者,除非 {@link #qualifiers()} 返回的数组为空或只有
* 包含 <code>null</code> 或空白值,在这种情况下我们将退回
* 首先到 {@link #qualifier()},如果它也不存在,则到默认值 =
* <code>contextId + "FeignClient"</code>。
*/
String[] qualifiers() default {};

/**
* @return 一个绝对 URL 或可解析的主机名(协议是可选的)。
*/
String url() default "";

/**
* @return 是否应该解码 404 而不是抛出 FeignExceptions
*/
boolean decode404() default false;

/**
* feign 客户端的自定义配置类。可以包含覆盖
* <code>@Bean</code> 定义组成客户端的部分,例如
* {@link feign.codec.Decoder},{@link feign.codec.Encoder},{@link feign.Contract}。
*
* @see FeignClientsConfiguration 默认
* @return feign 客户端的配置列表
*/
Class<?>[] configuration() default {};


/**
* 指定 Feign 客户端接口的后备类。后备类必须
* 实现这个注解所注解的接口,并且是一个有效的spring bean。
* @return 指定 Feign 客户端接口的后备类
*/


/**
	常用 回退类 如果调用失败运行
*/

Class<?> fallback() default void.class;  // 常用


/**
* 为指定的 Feign 客户端接口定义一个备用工厂。后备
* 工厂必须产生实现接口的回退类的实例
* 由 {@link FeignClient} 注释。后备工厂必须是有效的 Spring bean。
*
* @see FallbackFactory 了解详细信息。
* @return 指定 Feign 客户端接口的后备工厂
*/
Class<?> fallbackFactory() default void.class; 


/**
* @return 由所有方法级映射使用的路径前缀。
*/
String path() default "";  // 常用

/**
* @return 是否将 feign 代理标记为主 bean。默认为真。
*/
boolean primary() default true;  

}

nacos-cofig

参考文档 : nacos官网

引入依赖

     <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

在 bootstrap.properties 中配置 Nacos server 的地址和应用名

在这里插入图片描述

说明:之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值