Kite学习历程的第三十五天
目录
1 将mall-coupon,mall-member微服务添加到nacos注册中心
1 在mall-common 中引入SpringCloud-alibaba依赖
- 引入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>
- 引入Nacos依赖
<!--nacos配置中心依赖文件-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
1.1 添加mall-coupon到Nacos注册中心
- 修改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
- 在主配置内添加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微服务数据
- 在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
显示页面:
表示调用成功!