Kite的学习历程之商城项目的微服务添加到Nacos注册中心以及openfeign远程调用实现

Kite学习历程的第三十五天

1 将mall-coupon,mall-member微服务添加到nacos注册中心

1 在mall-common 中引入SpringCloud-alibaba依赖

  1. 引入alibaba夫依赖
<!--省略以后项目引入Alibaba组件时可以省略版本号-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
  1. 引入Nacos依赖

  <!--nacos配置中心依赖文件-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

1.1 添加mall-coupon到Nacos注册中心

  1. 修改application.yml配置文件
    添加nacos注册信息
    添加在注册中心的命名

下面为添加的内容

application:
    name: mall-coupon
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址

文件全部内容:

spring:
  datasource:
    username: root
    password: 25002500
    url: jdbc:mysql://192.168.1.103:3306/mall_sms
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: mall-coupon
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址

#  ##    配置mapper扫面的文件
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  #  配置主键自增
  global-config:
    db-config:
      id-type: auto
server:
  port: 7000


  1. 在主配置内添加Nacos注解
    添加的注解为:
    @EnableDiscoveryClient

@SpringBootApplication
@MapperScan("cn.kitey.mall.coupon.dao")
@EnableDiscoveryClient
public class MallCouponApplication {
    public static void main(String[] args) {
        SpringApplication.run(MallCouponApplication.class, args);
    }
}

1.2 mall-member的添加如mall-coupon添加一样

1.3 启动两个微服务,并且登录Nacos注册中心进行查看

访问地址:
http://localhost:8848/nacos/index
在这里插入图片描述
服务注册成功

2. 利用OpenFeign让mall-member调用mall-coupon微服务

2.1 修改mall-coupon微服务数据

  1. 在controller 包下的 CouponController 类中添加方法以供远程调用
    /**
     * 测试openfeign的远程调用
     * @return
     */
    @RequestMapping("/member/list")
    public R memberCoupons(){

        CouponEntity couponEntity = new CouponEntity();
        couponEntity.setCouponName("满100减10");
        return R.ok().put("coupon", Arrays.asList(couponEntity));

    }

2.2 修改mall-member中的代码调用上面创建的方法

1.1 引入openfeign
module创建时已经引入
1.2 编写一个接口,告诉SpringCloud这个接口需要调用远程服务
创建feign包。并创建接口CouponFeignService
在这里插入图片描述
CouponFeignService接口代码为复制调用mall-coupon微服务中方法的代码头
@FeignClient(“mall-coupon”): 为nacos注册中心的名称

下面为声明调用的方法
@RequestMapping("/coupon/coupon/member/list")
public R memberCoupons();

@FeignClient("mall-coupon")
public interface CouponFeignService {

    @RequestMapping("/coupon/coupon/member/list")
    public R memberCoupons();
}

1.3 开启远程调用的方法
在主启动类添加注解:@EnableFeignClients(basePackages = “cn.kitey.mall.member.feign”)


@EnableFeignClients(basePackages = "cn.kitey.mall.member.feign")
@SpringBootApplication
@EnableDiscoveryClient
public class MallMemberApplication {

    public static void main(String[] args) {
        SpringApplication.run(MallMemberApplication.class, args);
    }

}

1.4 在controller包中MemberController添加方法,进行调用


  @Resource
    private CouponFeignService couponFeignService;

    /**
     * 测试调用远程的coupon微服务
     * @return
     */
    @RequestMapping("/coupon")
    public R test(){
        MemberEntity memberEntity = new MemberEntity();
        memberEntity.setNickname("张三");
        R r = couponFeignService.memberCoupons();
        return R.ok().put("member", memberEntity).put("coupons", r.get("coupon"));
    }

该类的全部代码:

/**
 * 会员
 *
 * @author kitey
 * @email 1114537758@qq.com
 * @date 2020-07-19 20:46:50
 */
@RestController
@RequestMapping("member/member")
public class MemberController {
    @Autowired
    private MemberService memberService;

    @Resource
    private CouponFeignService couponFeignService;

    /**
     * 测试调用远程的coupon微服务
     * @return
     */
    @RequestMapping("/coupon")
    public R test(){
        MemberEntity memberEntity = new MemberEntity();
        memberEntity.setNickname("张三");
        R r = couponFeignService.memberCoupons();
        return R.ok().put("member", memberEntity).put("coupons", r.get("coupon"));
    }
    /**
     * 列表
     */
    @RequestMapping("/list")
   // @RequiresPermissions("member:member:list")
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = memberService.queryPage(params);

        return R.ok().put("page", page);
    }


    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    //@RequiresPermissions("member:member:info")
    public R info(@PathVariable("id") Long id){
		MemberEntity member = memberService.getById(id);

        return R.ok().put("member", member);
    }

    /**
     * 保存
     */
    @RequestMapping("/save")
    //@RequiresPermissions("member:member:save")
    public R save(@RequestBody MemberEntity member){
		memberService.save(member);

        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    //@RequiresPermissions("member:member:update")
    public R update(@RequestBody MemberEntity member){
		memberService.updateById(member);

        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    //@RequiresPermissions("member:member:delete")
    public R delete(@RequestBody Long[] ids){
		memberService.removeByIds(Arrays.asList(ids));

        return R.ok();
    }

}

2.3 进行测试

访问:
http://localhost:8000/member/member/coupon
显示页面:
在这里插入图片描述
表示调用成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值