【四】Dubbo整合Springboot
来源:互联网 发布:约翰穆勒知乎 编辑:程序博客网 时间:2024/05/14 03:24
1. 预备工作
这篇是基于之前springboot+mybatis+shiro+redis等完成的,也就目录的置顶系列
同时关于Dubbo、Zookeeper和Dubbo-Admin部署可以看点击这里
2. 建立Consumer项目和Provider项目
将原有的项目中的service实现和所依赖的Dao层,Po实体抽出,当作Provider项目。
将原有的项目中的service实现删去,因为之后实现是由Provider项目实现的。
3. Provider项目代码
首先是pom代码
<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> <groupId>com.kfit</groupId> <artifactId>springboot-provider</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot-provider</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.7</java.version><mybatis-spring-boot>1.2.0</mybatis-spring-boot><mysql-connector>5.1.39</mysql-connector><spring-boot-starter-redis-version>1.3.2.RELEASE</spring-boot-starter-redis-version> </properties><!-- spring boot 父节点依赖,引入这个之后相关的引入就不需要添加version配置,spring boot会自动选择最合适的版本进行添加。 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.1.RELEASE</version></parent> <dependencies> <!-- spring boot web支持:mvc,aop... --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> <!--dubbo start--> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.8</version> <exclusions> <exclusion> <artifactId>activation</artifactId> <groupId>javax.activation</groupId> </exclusion> <exclusion> <artifactId>mail</artifactId> <groupId>javax.mail</groupId> </exclusion> <exclusion> <artifactId>slf4j-log4j12</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> <exclusions> <exclusion> <artifactId>slf4j-log4j12</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> <!-- dubbo end --> <!-- Spring Boot Redis 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>${spring-boot-starter-redis-version}</version> </dependency><!-- thmleaf模板依赖. --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency> <groupId>com.github.theborakompanioni</groupId> <artifactId>thymeleaf-extras-shiro</artifactId> <version>1.2.1</version> </dependency> <!-- shiro spring. --><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.2.2</version></dependency><!-- Spring Boot Mybatis 依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis-spring-boot}</version></dependency><!-- MySQL 连接驱动依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql-connector}</version></dependency><!-- shiro ehcache --><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-ehcache</artifactId><version>1.2.2</version></dependency> </dependencies></project>
在这里强调一下,有两种整合方式,xml/注解。但是我用注解方式试了很多次都失败,应该是包冲突问题。所以这里我用xml配置方式。
在Resource下创建一个applicationProvider.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.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "><dubbo:application name="dubbo-demo" /><!-- zookeeper注册中心 --><dubbo:registry address="zookeeper://127.0.0.1:2181" /><dubbo:protocol name="dubbo" port="20880" /><!-- 和本地bean一样实现服务 --> <bean id="userInfoService" class="com.kfit.core.service.impl.UserInfoServiceImpl" /><!-- 向注册中心注册暴漏服务地址,注册服务 --><dubbo:service interface="com.kfit.core.service.UserInfoService"ref="userInfoService" executes="10" /></beans>创建完之后,在主程序添加ImportResource,如下
package com.kfit;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ImportResource;@SpringBootApplication@ImportResource( locations = {"classpath*:applicationProvider.xml"})public class provider {public static void main(String[] args) {SpringApplication.run(provider.class, args);}}
然后启动Provider,看是否注册到zookeeper(记得打开zookeeper,链接里有说明)可以打开Dubbo Admin界面,看服务者和消费者数量,如果成功的话继续配置Consumer。成功的Dubbo Admin界面显示如下
4. Consumer项目代码
pom代码和Provider一样。记得改下Consumer端口,避免和Provider重复
同样在Resource下创建applicationConsumer.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="consumer-of-dubbo-demo" /><dubbo:registry address="zookeeper://127.0.0.1:2181" /><dubbo:annotation package="com.kfit.*"/><!-- 向注册中心订阅服务 --><dubbo:reference id="userInfoService" interface="com.kfit.core.service.UserInfoService" /></beans>同样,在主程序更改如下
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ImportResource;@SpringBootApplication@ImportResource( locations = {"classpath*:applicationConsumer.xml"})public class Consumer {public static void main(String[] args) {SpringApplication.run(Consumer.class, args);}}
获取bean和以前一样。
@Autowiredprivate UserInfoService userInfoService;
注意Consumer的接口是保留的,接口的实现是从Provider拿的。如果不保留接口,就在pom里把Provider的jar打包进来。
启动之后,再观察Consumer是否从Zookeeper订阅,Dubbo-Admin如下,可以看到消费者订阅服务了。
5. 项目效果
首先是登陆界面
登陆进去之后选择用户查询,输入id,输出查询结果
看Provider后台,显示
INFO 3244 --- [:20880-thread-4] c.k.c.service.impl.UserInfoServiceImpl : 用户插入缓存 >> id: 1, username: admin,password: 123456
再次查询,显示
INFO 3244 --- [:20880-thread-6] c.k.c.service.impl.UserInfoServiceImpl : 从缓存中获取了用户 >> id: 1, username: admin,password: 123456
说明Consumer和Provider利用Zookeeper通信成功。
阅读全文
0 0
- 【四】Dubbo整合Springboot
- springboot+mybatis+dubbo整合
- springboot整合dubbo
- springboot整合dubbo
- springboot整合dubbo
- springboot整合dubbo
- springboot整合dubbo-start
- Springboot Dubbo ZooKeeper整合
- SpringBoot--整合Dubbo
- Springboot+Dubbo整合
- dubbo整合springboot入门案例
- SpringBoot与Dubbo的整合
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- SpringBoot项目中整合dubbo/zookeeper实战
- SpringBoot下的Dubbo和Zookeeper整合
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Java内存回收方式
- SSM框架---Spring
- c++常量
- Eclipse中使用SVN
- PostgreSQL之FUNCTION存储过程
- 【四】Dubbo整合Springboot
- 数据类型
- mxnet保存模型,以及用模型来预测新数据。
- 14个使你成为用户体验设计大师的好习惯
- ActiveMQ 设置登陆密码
- Win10下如何正确安装Python和cpu版的tensorflow
- date对象和math方法
- 利用tensorflow训练自己的图片数据(2)——输入图片处理
- 向量 与Python