相信,下图大家一定不陌生吧:注册中心,消费者,容器(提供者),监控中心。线框图也是画的如此清晰,这里就不跟大家详细的概述了。
开发环境
JDK1.7、Maven、Eclipse、SpringBoot1.5.1、Dubbo2.8.4
项目结构
实体类和业务接口,这里就不展示了,与提供者代码同步即可(自行打包引入或者复制)。
application.properties,也没什么好说的,修改一下server.context-path和server.port即可。
# 项目contextPath,一般在正式发布版本中,我们不配置server.context-path=/consumer# 错误页,指定发生错误时,跳转的URL。请查看BasicErrorController源码便知server.error.path=/error# 服务端口server.port=8081# session最大超时时间(分钟),默认为30server.session-timeout=60# 该服务绑定IP地址,启动服务器时如本机不是该IP地址则抛出异常启动失败,只有特殊需求的情况下才配置# server.address=192.168.16.11# tomcat最大线程数,默认为200server.tomcat.max-threads=300# tomcat的URI编码server.tomcat.uri-encoding=UTF-8#ZooKeeperdubbo.registry.address=192.168.1.180:2181logging.level.root=ERROR
dubbo.xml:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 消费者 应用信息 --><dubbo:application name="springBoot_dubbo_consumer"/><!-- 注册中心服务地址 --><dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" /><!-- 消费者配置 --><dubbo:consumer check="false"/><!-- 使用注解方式--><dubbo:annotation package="com.itstyle.dubbo"/></beans>
测试类一SpringbootDubboApplication.java:
@ImportResource({"classpath:dubbo.xml"})@SpringBootApplication//此处 userService 报空指针 如果是注解方式public class SpringbootDubboApplication implements CommandLineRunner {@Referenceprivate IUserService userService;public static void main(String[] args) {SpringApplication.run(SpringbootDubboApplication.class, args);}@Overridepublic void run(String... args) throws Exception {System.out.println("开启");User user = new User("张三", 19);userService.saveUser(user);}}
测试类二DubboTest.java:
@Component@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath:dubbo.xml" })//可以运行 自行修改 dubbo.xml中addresspublic class DubboTest {@Referenceprivate IUserService userService;@Testpublic void pors() {System.out.println("开启");User user = new User("张三", 19);userService.saveUser(user);}}
启动类Application.java:
/*** @author 科帮网 小柒*/@EnableAutoConfiguration@ImportResource({"classpath:dubbo.xml"})@Controllerpublic class Application {private static final Logger logger = Logger.getLogger(Application.class);@Referenceprivate IUserService userService;@RequestMapping("/")@ResponseBodypublic String greeting() {User user = new User("张三", 19);userService.saveUser(user);return "执行成功";}public static void main(String[] args) throws InterruptedException {SpringApplication.run(Application.class, args);logger.info("项目启动 ");}}
首先运行提供方项目,然后执行消费者启动类,最后我们访问以下URL,http://localhost:8081/consumer ,提供者打印我是:张三,页面返回执行成功,说明调用成功。