1.1Nacos注册发现和配置中心

1.创建一个maven项目 其他项目继承他,将这个maven项目当作总依赖

根据github的文档导入总依赖

<!--ali cloud 组件的总配件-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

注册和发现的依赖

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

项目的resources创建yml文件做配置

spring:
  datasource:
  #数据库账号密码
    username: root
    password: root
    #连接那个数据库
    url: jdbc:mysql://1.1.1.1:3306/gulimall_sms
    # 选择连接驱动
    driver-class-name: com.mysql.cj.jdbc.Driver
  cloud:
    nacos:
      discovery:
      # 注册发现的 地址
        server-addr: 127.0.0.1:8848
        #注册发现的名字
  application:
    name: gulimall-coupon
#mybatis的映射
mybatis-plus:
  mapper-locations: classpath*:/mapper/**/*.xml
  global-config:
  #属性的自增 @dataid
    db-config:
      id-type: auto
#服务的端口
server:
  port: 7000

在启动项加上

@EnableDiscoveryClient

2.1使用Nacos

进入 : Spring Cloud alibaba 和使用文档

//这里上面加了 就不需要了

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


启动后可能遇到两个问题

  • startup.cmd 启动后一闪而过

需要修改 配置用户的环境变量

  • Unable to start web server,Unable to start embedded Tomcat

修改statup.cmd

或者使用

cmd startup.cmd -m standalone启动

项目启动,进入

http://127.0.0.1:8848/nacos/index.html 查看

2.2远程调用-Openfeign

  1. 编写被调用者的内容即使提供者
@RequestMapping("/mlist")
public R memberForCoupon(){
    CouponEntity c = new CouponEntity();
    c.setCouponName("100-10");
    return  R.ok().put("mfc",Arrays.asList(c));
}

2.编写调用者信息 即使消费者

在消费者的里创建一个package专门是调用远程服务的包

创建一个接口

//声明式告诉远程调用
//FeignClient这里填写的是注册发现设置的名称
@FeignClient("gulimall-coupon")
public interface CouponFar {
    @RequestMapping("/coupon/coupon/mlist")
    public R member();
}

3.调用业务

@Autowired
CouponFar couponFar;
@RequestMapping("/f")
public R member(){
    MemberEntity memberEntity = new MemberEntity();
    memberEntity.setNickname("re-----------");
    R member = couponFar.member();
    Object coupons = member.get("coupon");
    return R.ok().put("member",memberEntity).put("coupon",coupons);
}

4.给启动类加上注解

//告诉系统去哪里找远程调用
@EnableFeignClients(basePackages = "com.cjg.gulimall.member.feign")

启动调用

这里有两个大坑

后面版本的cloud 不在自己添加spring-cloud-starter-loadbalancer

需要自己导入

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

第二 明明东西都是正确 调用时发现 dispatchservletxxxx的错误

这个是版本不兼容问题2.4.4的cloud 不太好,只要调用2.3.X一下的版本就好了

3.1配置中心

导入配置中心的依赖

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

创建bootstrap.properties配置 配置中心的信息

#配置中心对应的名称
spring.application.name=gulimall-coupon
#地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

启动项目找到应该设置的配置中心的名字

配置 配置中心


测试

在application.properties 随便写点东西

coupon.user.name=asdjfk
coupon.user.age=18_

@value("")调用过来

@Value("${coupon.user.age}")
String age;
@Value("${coupon.user.name}")
String name;
@RequestMapping("/f")
public R t(){
    return  R.ok().put("age,",age).put("name",name);
}

启动项目,访问路径,得到结果后,在配置中心修改配置,这里仍然不会动态刷新 需要在

调用的类上加上

@RefreshScope

来实现动态刷新

测试,成功

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐