Dubbo整合SpringBoot
2021-06-19 02:12
标签:stp 初始 text arrays list reg 通信 stat api 目前的dubbo已支持和springboot集成,还是之前的例子,这次我们通过springboot容器来实现。借此了解一下基于springboot容器启动的dubbo的配置及使用。 创建一个Maven空项目,作为项目的父工程,此工程的子项目基于Spring Boot 2.0.5 实现 在父工程的pom.xml引入之后要创建的子工程 可以提前看一下工程结构 下面分别来实现子工程:(子工程的实现方式都是在gmall工程下新建Module) 项目中共用的接口和POJO类,代码和之前一样,这里不再展开 工程结构如下 引入依赖 需要注意的是,根据jdk和Spring Boot版本的不同,dubbo-spring-boot-starter的版本需要有根据的选择 dubbo提供了@Service注解,可将类声明为提供方,省去了大量配置的麻烦 通过属性配置的方式设置application.properties springboot容器根据配置启动服务提供方,这里需要添加 @EnableDubbo 注解 提供方顺利启动 消费者工程在初始化时设置为web项目,结构如下 引入和服务提供方同样的依赖(代码略)。 dubbo提供了@Reference注解,可替换@Autowired注解,用于引入远程服务 配置文件application.properties 启动类同样加上@EnableDubbo注解 为查看调用是否成功,新增控制层用于访问 启动消费方,在浏览器访问 调用成功 Dubbo整合SpringBoot 标签:stp 初始 text arrays list reg 通信 stat api 原文地址:https://www.cnblogs.com/zjfjava/p/9696086.html1. 准备工作
modules>
module>gmall-interfacemodule>
module>user-service-providermodule>
module>order-service-consumermodule>
modules>
2. 公共API
3. 服务提供者
dependency>
groupId>com.zanggroupId>
artifactId>gmall-interfaceartifactId>
version>1.0-SNAPSHOTversion>
dependency>
dependency>
groupId>com.alibaba.bootgroupId>
artifactId>dubbo-spring-boot-starterartifactId>
version>0.2.0version>
dependency>
dependency>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-starterartifactId>
dependency>
dependency>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-starter-testartifactId>
scope>testscope>
dependency>
import com.alibaba.dubbo.config.annotation.Service;
import com.zang.gmall.bean.UserAddress;
import com.zang.gmall.service.UserService;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Service //属于Dubbo的@Service注解,非Spring 作用:暴露服务
@Component
public class UserServiceImpl implements UserService {
@Override
public List
#当前服务/应用的名字
dubbo.application.name=user-service-provider
#注册中心的协议和地址
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181
#通信规则(通信协议和接口)
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
#连接监控中心
dubbo.monitor.protocol=registry
#开启包扫描,可替代 @EnableDubbo 注解
##dubbo.scan.base-packages=com.zang.gmallimport com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// 开启基于注解的dubbo功能(主要是包扫描@DubboComponentScan)
// 也可以在配置文件中使用dubbo.scan.base-package来替代 @EnableDubbo
@EnableDubbo
@SpringBootApplication
public class UserServiceProviderApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceProviderApplication.class, args);
}
}
4. 服务消费者
import com.alibaba.dubbo.config.annotation.Reference;
import com.zang.gmall.bean.UserAddress;
import com.zang.gmall.service.OrderService;
import com.zang.gmall.service.UserService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class OrderServiceImpl implements OrderService {
@Reference
UserService userService;
@Override
public List
}#避免和监控中心端口冲突,设为8081端口访问
server.port=8081
dubbo.application.name=order-service-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.monitor.protocol=registry
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class OrderServiceConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(OrderServiceConsumerApplication.class, args);
}
}
import com.zang.gmall.bean.UserAddress;
import com.zang.gmall.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
public class OrderController {
@Autowired
OrderService orderService;
@ResponseBody //以json格式返回
@RequestMapping("/initOrder")
public List
5. 测试调用