spring-cloud-alibaba组件学习:

1.项目中的依赖

2. SpringCloud Alibaba-Nacos[作为注册中心]

1、首先,修改guli-common中的 pom.xml 文件,引入 Nacos Discovery Starter

<!--                配置中心来做配置管理-->

        <dependency>

            <groupId>com.alibaba.cloud</groupId>

            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

        </dependency>

2.在application.yml中加入配置

spring:

  datasource:

    username: root

    password: root

    url: jdbc:mysql://192.168.56.10:3306/gulimall_sms?useUnicode=true&characterEncoding=UTF-8

    driver-class-name: com.mysql.cj.jdbc.Driver


  cloud:

    nacos:

        discovery:

            server-addr: 127.0.0.1:8848

  application:

    name: gulimall-coupon  #服务名

3.启动nacos;

直接在bin文件中点击startup.cmd

4.然后在启动文件中加入注解:

@EnableDiscoveryClient

@SpringBootApplication

public class GulimallCouponApplication {

    public static void main(String[] args) {

        SpringApplication.run(GulimallCouponApplication.class, args);

    }

}

5.之后游览器输入URL:

127.0.0.1:8848/nacos

6、启动应用,观察nacos服务列表是否已经注册上服务

7.注册更多的服务上去,测试使用feign远程调用

Feign 使用三步 

1、导包 openfeign 

<dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

2、开启@EnableFeignClients 功能 

@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")  //去扫描这个包

@EnableDiscoveryClient

@SpringBootApplication

public class GulimallMemberApplication {

    public static void main(String[] args) {

        SpringApplication.run(GulimallMemberApplication.class, args);

    }

}

3、编写接口,进行远程调用

/*

这是一个声明式的远程调用,调用nacos注册的gulimall-coupon这个服务的coupon/coupon/member/list这个映射

*/

@FeignClient("gulimall-coupon")

public interface CouponFeignService {

    @RequestMapping("coupon/coupon/member/list")

    public R membercoupons();

}

4.本地映射方法

//远程调用其他服务,启动后URL输入localhost:8000/member/member/coupons  会调用couponFeignService.membercoupons(); 接口

    @RequestMapping("/member/member/coupons")

    public R test(){

        MemberEntity memberEntity = new MemberEntity();

        memberEntity.setNickname("张三");

        R membercoupons = couponFeignService.membercoupons();

//        membercoupons.get("");

        return R.ok().put("member",memberEntity).put("coupons",membercoupons.get("coupons"));

    }

3、SpringCloud Alibaba-Nacos[作为配置中心]

1、guli-commom 中pom.xml 引入 Nacos Config Starter

<!--                配置中心来做配置管理-->

        <dependency>

            <groupId>com.alibaba.cloud</groupId>

            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

        </dependency>

2、在应用的 /src/main/resources/bootstrap.properties 配置文件中配置 Nacos Config 元数据

spring.application.name=gulimall-coupon

spring.cloud.nacos.config.server-addr=127.0.0.1:8848 主要配置应用名和配置中心地址

3.需要给配置中心默认添加一个数据集    gulimall-coupon.properties  默认规则:应用名.properties

4.给应用名.properties添加任何配置

conpon.user.name=zhangsan

conpon.user.age=18

5.动态获取配置,添加注解 @RefreshScope

//如果配置中心和当前应用中心都配置了相同的项,优先选择配置中心中的,

@RefreshScope

@RestController

@RequestMapping("coupon/coupon")

public class CouponController {

    @Autowired

    private CouponService couponService;

    

      //@Value("${配置项的名}")

    @Value("${coupon.user.name}")

    private String name;

    @Value("${coupon.user.age}") //直接取出配置文件中的参数

    private String age;

    @RequestMapping("/test1")

    public R test(){

        return R.ok().put("name",name).put("age",age);

    }

进阶:

1.命名空间:配置隔离

     默认:public(保留空间);默认新增的所有配置都在public空间

    1)开发,测试,生产:利用命名空间来做环境隔离

           注意:在 bootstrap.properties配置上需要使用哪个命名空间:

 spring.cloud.nacos.config.namespace=1eacbb04-ae05-4d37-af2f-1f843b20d1e

    2)每一个微服务之间互相隔离,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置

2、配置集:所有配置的集合

3、配置集ID:相当于配置文件名

4、配置分组:默认所有的配置集都属于:DEFAULT_GROUP;

配置文件:bootstrap.properties中内容

spring.application.name=gulimall-coupon

spring.cloud.nacos.config.server-addr=127.0.0.1:8848



spring.cloud.nacos.config.namespace=329e62fd-7478-4fd8-97e4-4b6544e49af1

spring.cloud.nacos.config.group=dev   //该服务配置分组选择哪一个

5、同时加载多个配置集:

1)微服务任何配置信息,任何配置文件都可以放在配置中心中

2)只需要在 bootstrap.properties 说明加载配置中心中哪些文件即可

spring.application.name=gulimall-coupon

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

#命名空间

spring.cloud.nacos.config.namespace=329e62fd-7478-4fd8-97e4-4b6544e49af1

#配置分组

spring.cloud.nacos.config.group=prop



spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml

spring.cloud.nacos.config.ext-config[0].group=dev

spring.cloud.nacos.config.ext-config[0].refresh=true



spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml

spring.cloud.nacos.config.ext-config[1].group=dev

spring.cloud.nacos.config.ext-config[1].refresh=true

3)@Value,@ConfigurationProperties。。。 以前SpringBoot任何方法都可以获取值,都能使用

配置中心中配置的优先使用配置中心中的

### 解决 Maven 中 `com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery` 的依赖问题 当遇到无法解析 `com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:unknown` 或者找不到该依赖的情况时,通常是因为项目配置文件中的版本号未指定或错误。以下是详细的解决方案: #### 1. 检查并更新 POM 文件中的版本号 确保在项目的 `pom.xml` 文件中指定了正确的 Spring Cloud Alibaba 版本。可以参考官方文档获取最新版本信息[^4]。 ```xml <dependencyManagement> <dependencies> <!-- 其他依赖 --> <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> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies> ``` #### 2. 添加阿里云仓库镜像源 如果默认的中央仓库未能找到所需的依赖项,则可以在 `settings.xml` 或 `pom.xml` 中添加阿里云 Maven 镜像库作为备用下载渠道[^3]。 ```xml <mirrors> <mirror> <id>aliyunmaven</id> <name>Aliyun Maven</name> <url>https://maven.aliyun.com/repository/public</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ``` #### 3. 清除本地缓存重新尝试构建 有时由于网络或其他因素可能导致某些资源被错误地存储到了本地Maven仓库里而造成冲突。此时可以通过命令行清除这些临时数据后再试一次编译操作。 ```bash mvn clean install -U ``` 上述方法能够有效处理大部分关于 `com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery` 的依赖缺失问题。对于更复杂的情形建议查阅相关组件的具体使用手册以及社区讨论区寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值