1.利用 dubbo-start.jar 包中 @server @EnableDubbo 来替代使用 xml
2.利用 dubbo-start.jar 包中 @ImportResource 来使用 xml 文件集成 dubbo
第一步我们先搭建一个 springboot 的项目如下:
在 pom 文件中写入依赖:
<modules> <module>dubbo-common</module> <module>dubbo-provider</module> </modules>
<dependencyManagement> <dependencies> <!-- dubbo 替换 dubbox--> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.6.2</version> </dependency> <!-- curator-recipes 替换 zkclient--> <!--<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.0.1</version> </dependency>--> <!--其实我们现在使用的是curator来替换zkclient--> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.6.0</version> </dependency> <!--alibaba提供的启动项--> <dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> </dependency> </dependencies> </dependencyManagement>
接着我们在 dubbo-zk project 下新建一个 module 名为:
里面 pom 这样写:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.ouyu.dubboZk</groupId> <artifactId>dubbo-zk</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath/> <!-- lookup parent from repository --> </parent> <artifactId>dubbo-common</artifactId> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> </project>
ok 我们在 common module 中新建两个 package 一个叫 entity 一个是 service
在 service 中新建个接口 UserService 写入一个方法
ok 接着来建造另一个依赖 dubbo-provider
在其 pom 文件中引入:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.ouyu.dubboZk</groupId> <artifactId>dubbo-zk</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath/> <!-- lookup parent from repository --> </parent> <artifactId>dubbo-provider</artifactId> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>com.ouyu.dubboZk</groupId> <artifactId>dubbo-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!-- dubbo 替换 dubbox--> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> </dependency> <!-- curator-recipes 替换 zkclient--> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> </dependency> <dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> </dependency> <!--<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.6.RELEASE</version> </dependency>--> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
在 propertist 文件中写
server.port=8081 server.context-path=/ spring.application.name=dubbo-spring-boot-starter dubbo.application.name=springboot_demo dubbo.registry.address=zookeeper://120.79.63.27:2181 #这是你的zookeeper地址 dubbo.provider.threads=10 dubbo.provider.threadpool=fixed dubbo.provider.loadbalance=roundrobin dubbo.server=true dubbo.protocol.name=dubbo
在 application 上加上注解 @EnableDubbo
在 main 方法中写入 dubbo 的启动方法 Main.main(args);
接着新建 servicepackage
在实现类上面打上 dubbo 的 @Service 注解和 spring 的 @Componet 注解以便服务的注册于发现 在 @Service 上写上 version 版本信息 等消费消费的时候会用到务必要填
服务提供端我们就完成了 现在开始启动试试

看到对应圈住的信息就说明 ok
现在我们来把消费者搞起来 新建 module dubbo-comsumer
pom 中的依赖跟 provider 中其实都一样 只是增加了一个 web 的框架
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.6.RELEASE</version> </dependency>
在 properties 中
#server server.port=8082 server.context-path=/ #dubbo spring.application.name=dubbo-spring-boot-starter dubbo.rpotocol.port=20880 spring.dubbo.application.id=springboot_demo dubbo.application.name=springboot_demo dubbo.registry.address=zookeeper://120.79.63.27:2181 dubbo.protocol.name=dubbo
在 application 中写上 @EnableDubbo 注解就行
我们看到我们 userService 变量上加上了 @Reference 注解上面写上了对应服务提供者的版本信息
ok 现在启动测试下
看到上面圈住的信息 就说明没毛病老铁
打开浏览器输入 http://localhost:8082/dubbo/api/userInfo
得到返回 json 大功告成 基于 springboot 的 dubbo 没使用 xml 实现
二。我们使用 xml
在 provider 模块中把 properties 都注释掉出了端口号 在下面新建 provider.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://dubbo.apache.org/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> <dubbo:application name="hello-world-app" /> <dubbo:registry address="zookeeper://120.79.63.27:2181" /> <dubbo:protocol name="dubbo" port="20880" /> <bean id="userService" class="com.ouyu.dubbozk.service.UserserviceImpl"/> <dubbo:service interface="com.ouyu.dubbozk.service.UserService" ref="userService" version="1.0.0"/> </beans>
在 aplication 中隐藏点 @EnableDubbo 注解增加 @ImporResource 注解
在 UserServiceImpl 中把 @Componet @Service 删掉
启动时 信息跟基于注解的一样 没问题
重点在于服务消费者模块上面
一样把他下面的 properties 中信息给注释掉新建 comsumer.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://dubbo.apache.org/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> <dubbo:application name="hello-world-app1"/> <dubbo:registry address="zookeeper://120.79.63.27:2181"/> <dubbo:reference id="userService" check="false" interface="com.ouyu.dubbozk.service.UserService" version="1.0.0"/> </beans>
这个里面的 version 可写可不写
在 application 中只增加 @ImportResouce 注解不删除 @EnableDubbo 注解
api 提供那个地方一定不要改了 就使用 @Reference(version = "1.0.0")
记住加上版本信息
启动规矩的很 稳不稳的 跟注解访问一样
好了今天的讲解就到这里为止
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于