maven整合@data注解_SpringBoot 整合 Dubbo实践(实用文章)

作者:Cott

来源:https://www.cnblogs.com/cott/p/12373043.html

1.选择ZooKeeper作为注册中心

在linux环境中使用docker安装ZooKeeper

//拉取zookeeper镜像docker pull zookeeper//启动zookeeperdocker run -d -p 2181:2181 -v /mysoft/zookeeper/data/:/data/ --name=zookeeper --privileged zookeeper

使用zookeeper-dev-ZooInspector客户端连接工具查看

9d880c37fa7089c64638c9506271f0fc.png
0bbfd97925b6d55c06f8353bf8e7edec.png

2.创建maven项目统一声明接口,把所有接口提取到单独的项目,通过maven引入到其他项目

ff7500701f4e9906e3164099364037e1.png

pom.xml

7d6a1e4694aa24a94501cbe4ef211128.png

UserAddress.java

0e4710b04b3349983f1118037678d2d1.png

OrderService.java

package com.cott.gmail.service;import com.cott.gmail.bean.UserAddress;import java.util.List;public interface OrderService {    List initOrder(String id);}

UserService.java

package com.cott.gmail.service;import com.cott.gmail.bean.UserAddress;import java.util.List;public interface UserService {    List getAddress(String userId);}

3.创建生产者SpringBoot项目

f02a9c6409d71ef67de2681c1ac769c5.png

pom.xml引入上文接口项目,引入dubbo依赖

ff6949095b2c0a10f8cd17ace12dc790.png

实现UserService接口,作为dubbo的生产者需要用@Service注解,为了和spring的@Service注解区分,所以这里用的是@Component注解。更多springboot实战类文章:SpringBoot内容聚合

UserServiceImpl.java

package com.cott.gmail.bootuserserviceprovider.service.impl;import com.alibaba.dubbo.config.annotation.Service;import com.cott.gmail.bean.UserAddress;import com.cott.gmail.service.UserService;import org.springframework.stereotype.Component;import java.util.Arrays;import java.util.List;@Service@Componentpublic class UserServiceImpl implements UserService {    @Override    public List getAddress(String uesrId) {        UserAddress userAddress1 = new UserAddress();        userAddress1.setId(1);        userAddress1.setUserAddress("1");        userAddress1.setUserId("1");        UserAddress userAddress2 = new UserAddress();        userAddress2.setId(2);        userAddress2.setUserAddress("2");        userAddress2.setUserId("2");        return Arrays.asList(userAddress1, userAddress2);    }}

主方法上用@EnableDubbo启用Dubbo注解

BootUserServiceProviderApplication.java

package com.cott.gmail.bootuserserviceprovider;import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@EnableDubbo@SpringBootApplicationpublic class BootUserServiceProviderApplication {    public static void main(String[] args) {        SpringApplication.run(BootUserServiceProviderApplication.class, args);    }}

配置文件指定应用名称,注册中心,服务协议和端口号

application.yml

dubbo:  application:    name: boot-user-service-provider  registry:    address: 192.168.200.128:2181    protocol: zookeeper  protocol:    name: dubbo    port: 20880

最后启动程序,在dubbo-admin中查看服务已经注册上去了。

4f49dc0114e74bd472d25a39a0429398.png

4.创建消费者SpringBoot项目

0d8c5d9ea7a889a195a6ea5ee3f15ab4.png

pom.xml引入上文接口项目,引入dubbo依赖

603e447770848cd7ce46b17715555125.png

实现OrderServiece接口,这里的@Service是spring的,这里使用@Reference注解声明UserService是通过远程调用注入进来

OrderServiceImpl.java

package com.cott.gmail.bootorderserviceconsumer.service.impl;import com.alibaba.dubbo.config.annotation.Reference;import com.cott.gmail.bean.UserAddress;import com.cott.gmail.service.OrderService;import com.cott.gmail.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class OrderServiceImpl implements OrderService {    @Reference    UserService userService;    @Override    public List initOrder(String id) {        System.out.println("id= " + id);        List list = userService.getAddress("1");        for (UserAddress user : list        ) {            System.out.println(user.getUserAddress());        }        return list;    }}

OrderController.java

package com.cott.gmail.bootorderserviceconsumer.controller;import com.cott.gmail.bean.UserAddress;import com.cott.gmail.service.OrderService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import java.util.List;@Controllerpublic class OrderController {    @Autowired    OrderService orderService;    @ResponseBody    @GetMapping("/initOrder")    public List initOrder(@RequestParam(name = "id") String id) {        return orderService.initOrder(id);    }}

@EnableDubbo启用Dubbo注解

BootOrderServiceConsumerApplication.java

package com.cott.gmail.bootorderserviceconsumer;import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@EnableDubbo@SpringBootApplicationpublic class BootOrderServiceConsumerApplication {    public static void main(String[] args) {        SpringApplication.run(BootOrderServiceConsumerApplication.class, args);    }}

配置文件中声明服务名称,注册中心,以及tomcat对外端口号

application.yml

dubbo:  application:    name: order-service-provider  registry:    address: 192.168.200.128:2181    protocol: zookeeperserver:  port: 8081

至此,一个简单的dubbo项目已经开发完成,下面启动消费者项目,在浏览器中输入url,得到返回结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值