看了很多博客总算自己完成了,总结如下:

1.在linux上安装zookeeper和dubbo(非集群)

  • 下载zookeeper-3.4.6.tar.gz并解压缩到/usr/local路径下
  • 进入到/usr/local/zookeeper-3.4.6/bin目录下,通过./zkServer.sh启动zookeeper
  • 下载dubbo-admin-2.5.4.SNAPSHOT.war 到linux上,通过
cp dubbo-admin-2.5.4.SNAPSHOT.war /usr/local/tomcats/tomcat-8080/webapps

命令将该war包放到一个tomcat的webapps目录下,进入tomcat的bin目录启动tomcat

此时,dubbo-admin-2.5.4.SNAPSHOT.war会自动解压缩成为dubbo-admin-2.5.4.SNAPSHOT文件夹,为了便于访问,我们通过

mv dubbo-admin-2.5.4.SNAPSHOT dubbo

命令把该文件夹名称修改为dubbo;之后便可以通过 http://主机IP地址:8080/dubbo访问到dubbo的控制页面。

访问时需要输入用户名和密码,默认是-root   -root

spring boot dum spring boot dump_SpringBoot

现在就可以通过这个界面查看dubbo的相关信息,包括注册的服务等。

2.SpringBoot整合Dubbo

  • 创建两个Spring Boot工程,添加web依赖,一个作为服务提供者,一个作为服务消费者;
  • 添加dubbo依赖:在两个工程的pom文件中添加如下依赖:两个工程一样,三个依赖都不能少
<!-- dubbo依赖 -->
	    <dependency>
			<groupId>com.alibaba.spring.boot</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>2.0.0</version>
		</dependency>
		
		<dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
		<dependency>
			<groupId>com.101tec</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.7</version>
		</dependency>

这里,dubbo的依赖有两种,如下:

spring boot dum spring boot dump_dubbo_02

有的博客中选的是io.dubbo.springboot这个dubbo依赖,但是这个依赖中并没有dubbo注解开发需要的包,所以我选择的是com.alibaba.spring.boot  。至于com.alibaba这个依赖,已经在com.alibaba.spring.boot这个起始依赖里包含了。

  • 在yml文件中配置dubbo(也许alt+/不能提示出dubbo的配置属性,但是没有关系),除了端口,其他的配置都一样

spring boot dum spring boot dump_spring_03

spring boot dum spring boot dump_zookeeper_04

我的服务所在的包是com.ehr.humanfiles.service,所以在配置文件中scan的值就是这个。

  • 编写代码:
  • 服务发布者是ehr-humanfiles工程,发布服务的类是HumanfilesServiceImpl类,实现的是HumanfilesService接口

注意,在该工程的启动类上要添加@EnableDubbo标签,否则会无法注册服务

另:代码中的@Service是dubbo.config包下的,不是springframework包下的!!!不要导错了

spring boot dum spring boot dump_spring boot dum_05

spring boot dum spring boot dump_dubbo_06

  • 此时启动该项目,控制台如下:

spring boot dum spring boot dump_zookeeper_07

spring boot dum spring boot dump_dubbo_08

spring boot dum spring boot dump_SpringBoot_09

可以看到,控制台一些关于zookeeper的日志信息,同时dubbo控制台多了刚才注册的服务。项目搭建成功

spring boot dum spring boot dump_dubbo_10

  • 服务调用工程
  • 还是要在启动类上添加@EnableDubbo注解
  • 在服务调用工程ehr-portal的一个Controller中测试

spring boot dum spring boot dump_spring_11

humanfilesService.human()返回的是"dubboService",视图解析器将进行解析,为我们跳转到dubboService.html页面:

spring boot dum spring boot dump_SpringBoot_12

至此,SpringBoot整合Dubbo完成!dubbo控制台也出现了服务消费者。

spring boot dum spring boot dump_dubbo_13