17.玩轉Spring Boot 整合Dubbo
玩轉Spring Boot 整合Dubbo
使用Spring Boot 與Dubbo整合,這裡我之前嘗試了使用註解的方式,簡單的使用註解註冊服務其實是沒有問題的,但是當你涉及到使用註解的時候在服務裡面引用事務,注入其他物件的時候,會有一些問題。於是我就果斷放棄了註解了,使用的是XML,這裡可能介紹的是Dubbo,但是如果使用Dubbox的話,基本上是相容的。接下來,將說說使用XML的方式與Spring Boot在一起開發。1.建立工程在pom.xml中加入依賴
建立工程名為: (1)springboot-dubbo-provide (2)springboot-dubbo-api (3)springboot-dubbo-consume springboot-dubbo-api工程主要是放一些service介面,用於提供給消費者使用 。springboot-dubbo-provide工程用於提供服務。 springboot-dubbo-consume工程為消費者。在springboot-dubbo-provide工程中開啟pom.xml加入以下依賴,完整程式碼如下:<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.chengli</groupId> <artifactId>springboot-dubbo-provide</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot-dubbo-provide</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.3.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <com.alibaba.dubbo.version>2.5.3</com.alibaba.dubbo.version> <org.apache.zookeeper.version>3.4.6</org.apache.zookeeper.version> <com.github.sgroschupf.zkclient.version>0.1</com.github.sgroschupf.zkclient.version> </properties> <dependencies> <dependency> <groupId>com.chengli</groupId> <artifactId>springboot-dubbo-api</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- dubbo --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> <version>${com.alibaba.dubbo.version}</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>${org.apache.zookeeper.version}</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>${com.github.sgroschupf.zkclient.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
開啟springboot-dubbo-consume工程,在pom.xml中加入以下依賴,完整程式碼如下:
<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.chengli</groupId> <artifactId>springboot-dubbo-consume</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot-dubbo-consume</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.3.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <com.alibaba.dubbo.version>2.5.3</com.alibaba.dubbo.version> <org.apache.zookeeper.version>3.4.6</org.apache.zookeeper.version> <com.github.sgroschupf.zkclient.version>0.1</com.github.sgroschupf.zkclient.version> </properties> <dependencies> <dependency> <groupId>com.chengli</groupId> <artifactId>springboot-dubbo-api</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- dubbo --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> <version>${com.alibaba.dubbo.version}</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>${org.apache.zookeeper.version}</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>${com.github.sgroschupf.zkclient.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2.Dubbo配置
2.1springboot-dubbo-provide服務提供者
(1)在springboot-dubbo-provide專案中建立入口啟動類MainConfig,完整程式碼如下:package com.chengli.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MainConfig { public static void main(String[] args) { SpringApplication.run(MainConfig.class, args); try { System.in.read(); } catch (Exception e) { e.printStackTrace(); } } }
(2)建立Dubbo配置類
package com.chengli.springboot.dubbo;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.PropertySource;
@Configuration
@PropertySource("classpath:dubbo/dubbo.properties")
@ImportResource({ "classpath:dubbo/*.xml" })
public class DubboConfig {
}
(3)建立Dubbo配置檔案
在src/main/resources下新建資料夾dubbo,並加入以下配置:
dubbo-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://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.application.name}" />
<!-- 註冊中心暴露服務地址 -->
<!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
<!-- <dubbo:registry protocol="zookeeper" address="10.170.219.98:2181,10.173.55.173:2181" /> -->
<dubbo:registry protocol="${dubbo.registry.protocol}" address="${dubbo.registry.address}" />
<!-- 暴露服務 -->
<dubbo:protocol name="${dubbo.protocol.name}" port="${dubbo.protocol.port}" />
<dubbo:service interface="com.chengli.springboot.example.service.ExampleService"
ref="exampleServiceImpl" retries="0" timeout="6000" />
</beans>
注意:這裡我釋出的example服務是示例,具體的根據實際修改(4)建立dubbo.properties
#應用名稱
dubbo.application.name=example-provider
#註冊中心型別
dubbo.registry.protocol=zookeeper
#註冊中心地址
dubbo.registry.address=127.0.0.1:2181
#暴露服務方式
dubbo.protocol.name=dubbo
#暴露服務埠
dubbo.protocol.port=20880
2.2springboot-dubbo-consume服務消費者
(1)建立入口啟動類MainConfigpackage com.chengli.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MainConfig {
public static void main(String[] args) {
SpringApplication.run(MainConfig.class, args);
}
}
(2)建立Dubbo配置類
package com.chengli.springboot.dubbo;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.PropertySource;
@Configuration
@PropertySource("classpath:dubbo/dubbo.properties")
@ImportResource({ "classpath:dubbo/*.xml" })
public class DubboConfig {
}
(3)建立Dubbo配置檔案 在src/main/resources下新建資料夾dubbo,並加入以下配置: dubbo-consume.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.application.name}" />
<!-- 註冊中心暴露服務地址 -->
<dubbo:registry protocol="${dubbo.registry.protocol}" address="${dubbo.registry.address}" />
<dubbo:reference id="axempleService" interface="com.chengli.springboot.example.service.ExampleService" />
</beans>
(4)建立dubbo.properties
#應用名稱
dubbo.application.name=example-consume
#註冊中心型別
dubbo.registry.protocol=zookeeper
#註冊中心地址
dubbo.registry.address=127.0.0.1:2181
到這裡基本上就已經可以了,不過測試類的程式碼我就不貼上來了。只要在API中定義介面實現即可。使用Spring Boot 與Dubbo整合的時候,需要注意的是,不要使用Spring Boot提供的devtools熱啟動,因為devtools提供了兩個ClassLoader,載入策略問題導致出現錯誤,無法啟動。如果開發中需要熱載入,那麼使用Spring 提供的springloaded。 有興趣的朋友可以加群探討相互學習:
Spring Boot QQ交流群:599546061
相關推薦
17.玩轉Spring Boot 整合Dubbo
玩轉Spring Boot 整合Dubbo 使用Spring Boot 與Dubbo整合,這裡我之前嘗試了使用註解的方式,簡單的使用註解註冊服務其實是沒有問題的,但是當你涉及到使用註解的時候在服務裡面引用事務,注入其他物件的時候,會有一些問題。於是我就果斷放棄
玩轉Spring Boot 集成Dubbo
ext 入口 1.8 bat .proto 中心 group autoconf spa 玩轉Spring Boot 集成Dubbo 使用Spring Boot 與Dubbo集成,這裏我之前嘗試了使用註解的方式,簡單的使用註解註冊服務其實是沒有問題的,但
spring-boot整合dubbo:Spring-boot-dubbo-starter
hub pack 自動配置 china end service get exceptio 整合 為什麽要寫這個小工具 如果你用過Spring-boot來提供dubbo服務,相信使用中有很多“不爽”的地方。既然使用spring boot,那麽能用註解的地方絕不用xml配置,這
Spring Boot 整合 Dubbo和Zookeeper
prop pre mode epo con implement 應用 del www. Spring Boot 整合 Dubbo和Zookeeper Spring Boot 整合 Dubbo和Zookeeper 環境介紹 Zookeeper 安裝 啟動 D
玩轉spring boot——開篇
理解 帶來 時間 玩轉 java 好用 實踐 體系 一個個 很久沒寫博客了,而這一轉眼就是7年。這段時間並不是我沒學習東西,而是園友們的技術提高的非常快,這反而讓我不知道該寫些什麽。我做程序已經有十幾年之久了,可以說是徹徹底底的“程序老炮”,至於技術怎麽樣?我個人認為是非常
Spring Boot整合Dubbo框架demo
Dubbo框架原理見之前的博文:http://www.cnblogs.com/umgsai/p/5836925.html 首先啟動zookeeper Server端 Pom配置如下 <?xml version="1.0"?> <project xm
spring boot整合dubbo,Spring boot +Dubbo,簡易的配置方式
剛做完一個基於motan的專案不久,便去看看dubbo的新特性了,dubbo自上年9月恢復更新到現在大概半年多,發現已經有和spring boot整合的配置了。個人喜歡的配置方式優先順序一般都是資原始
spring boot整合dubbo加入mybatis,mybatisplus(Client)
首先我們先用myeclipse建立一個maven專案(可直接去dubbo官網生成http://start.dubbo.io/)。 目錄結構: 接下來複制一下pom配置(根據自己所需) <project xmlns="http://maven.apache.or
Spring Boot 整合dubbo與zookeeper實現不同專案之間資料通過服務的傳遞
一、安裝zookeeper 1、下載路徑:http://mirrors.hust.edu.cn/apache/zookeeper/ 可以自己選擇版本進行下載(同時支援windows和linux) 2、目錄結構 3、修改conf下的配置檔案zoo.cfg 4、
spring boot整合dubbo
spring boot整合dubbo spring-boot-start-dubbo spring-boot-start-dubbo,讓你可以使用spring-boot的方式開發dubbo程式。使dubbo開發變得如此簡單。 如何使用 1. clone 程式碼(可選,已經發布到中央倉
9.玩轉Spring Boot 全域性異常處理@ControllerAdvice
玩轉Spring Boot 全域性異常處理@ControllerAdvice 在開發中出現異常後,可能需要一個統一處理的地方,來處理程式出現的異常,針對不同的異常做不同的處理,這裡我們通過@ExceptionHandler註解來實現。在WEB開發中,比如頁面出
14.玩轉Spring Boot 多資料來源
玩轉Spring Boot 多資料來源 在專案中有的時候需要用到多個數據源,有個問題就是單資料來源的事務是沒有問題的,多資料來源是會存在事務問題的。這裡不做事務講解,事務可以用JTA分散式事務,也可以用MQ。具體不做敘述,接下來說如何實現多資料來源並且使用A
Spring Boot整合Dubbo執行
原文地址:http://www.cnblogs.com/whthomas/p/running-dubbo-on-spring-boot.html Dubbo(http://dubbo.io/) 是阿里的開源的一款分散式服務框架。而Spring Boot則是Sprin
玩轉Spring Boot 註冊Servlet、Filter、Listener
玩轉Spring Boot 註冊Servlet、Filter、Listener JAVA架構師Ya七月 2019-0
Spring-Boot整合freemarker引入靜態資源css、js等(轉)
mark pan 創建 line path main 實現 content -m 一、概述springboot 默認靜態資源訪問的路徑為:/static 或 /public 或 /resources 或 /META-INF/resources 這樣的地址都必須定義在src/
Spring Boot和Dubbo整合
程式碼demo http://git.oschina.net/zhangxh20/spring-boot-dubbo 專案共分成4個模組 dubbo-api dubbo-dao dubbo-service dubbo-web dubbo-
Spring Boot使用dubbo-spring-boot-starter整合Dubbo
簡介: Dubbo Spring Boot 工程致力於簡化 Dubbo RPC 框架在 Spring Boot 應用場景的開發。同時也整合了 Spring Boot 特性: 自動裝配 (比如: 註解驅動, 自動裝配等). Production-Ready (比如
spring boot 與dubbo 2.8.4整合的一些問題
對於spring boot也支援xml配置的方式,所以如果使用dubbo註解這是不叫簡單的方式,只需要對spring boot 的啟動類的頭部加上@ImportResource(locations = {"配置檔案的位置"}),這樣就搞定了,在配置後發現啟
Spring Boot 整合 Apache Dubbo
`Apache Dubbo`是一款高效能、輕量級的開源 `Java` `RPC` 框架,它提供了三大核心能力:面向介面的遠端方法呼叫,智慧容錯和負載均衡,以及服務自動註冊和發現。 > 注意,是 `Apache Dubbo`,不再是 `Alibaba Dubbo`。簡單來說就是 `Alibaba` 將
Spring Boot 整合 Elasticsearch,實現 function score query 權重分查詢
search 小寫 業務 jpg 啟動會 last cti cal agen 摘要: 原創出處 www.bysocket.com 「泥瓦匠BYSocket 」歡迎轉載,保留摘要,謝謝! 『 預見未來最好的方式就是親手創造未來 – 《史蒂夫·喬布斯