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")
记住加上版本信息
启动规矩的很 稳不稳的 跟注解访问一样
好了今天的讲解就到这里为止
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于