詳解Springboot整合Dubbo之代碼集成和發(fā)布
本文介紹了Springboot整合Dubbo之代碼集成和發(fā)布,分享給大家,具體如下:
1. boot-dubbo-api相關(guān)
打開(kāi)boot-dubbo-api項(xiàng)目,正在src/main/java下創(chuàng)建一個(gè)包,并創(chuàng)建你需要dubbo暴露的接口TestService.java,并創(chuàng)建一個(gè)實(shí)體類用于測(cè)試User.java。如下圖所示:
創(chuàng)建文件和包結(jié)構(gòu)
User.java
package com.boot.domain; import lombok.Data; import java.io.Serializable; @Data public class User implements Serializable { private Integer id; private String username; private String password; private Integer age; private Integer gender; }
TestService.java
package com.boot.service; import com.boot.domain.User; public interface TestService { String sayHello(String str); User findUser(); }
2. boot-dubbo-provider相關(guān)
首先我們先看看總共需要編寫(xiě)的內(nèi)容,文件的層次結(jié)構(gòu)圖
boot-dubbo-provider項(xiàng)目結(jié)構(gòu)圖
第一步:我們首先實(shí)現(xiàn)我們?cè)赽oot-dubbo-api上定義的接口,創(chuàng)建一個(gè)TestServiceImpl類并實(shí)現(xiàn)TestService
package com.boot.service.impl; import com.alibaba.dubbo.config.annotation.Service; import com.boot.domain.User; import com.boot.service.TestService; import java.text.SimpleDateFormat; import java.util.Date; @Service(version = "1.0.0") public class TestServiceImpl implements TestService { @Override public String sayHello(String str) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); return dateFormat.format(new Date()) + ": " + str; } @Override public User findUser() { User user = new User(); user.setId(1001); user.setUsername("scott"); user.setPassword("tiger"); user.setAge(20); user.setGender(0); return user; } }
注意:代碼里的@Service注解是com.alibaba.dubbo.config.annotation.Service的。
第二步:在resources下創(chuàng)建一個(gè)config文件夾,在config下創(chuàng)建spring-dubbo.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="provider"/> <!-- 注冊(cè)中心的ip地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181"/> <!-- 掃描注解包路徑,多個(gè)包用逗號(hào)分隔,不填pacakge表示掃描當(dāng)前ApplicationContext中所有的類 --> <dubbo:annotation package="com.boot.service.impl"/> </beans>
第三步:在com.boot包下新建Springboot的入口類,創(chuàng)建一個(gè)ProviderApplication.java文件。
package com.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource; import java.io.IOException; @SpringBootApplication @ImportResource({"classpath:config/spring-dubbo.xml"}) public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); try { System.in.read(); } catch (IOException e) { e.printStackTrace(); } } }
第四步:最后在resources文件夾下面創(chuàng)建application.yml,Springboot的配置文件。
# 在這里編寫(xiě)springboot的配置信息
3. boot-dubbo-consumer相關(guān)
首先我們先看看總共需要編寫(xiě)的內(nèi)容,文件的層次結(jié)構(gòu)圖
boot-dubbo-consumer項(xiàng)目結(jié)構(gòu)圖
第一步:編寫(xiě)我們的Controller控制類,在com.boot.controller包下新建一個(gè)TestController類,編寫(xiě)訪問(wèn)地址。
package com.boot.controller; import com.alibaba.dubbo.config.annotation.Reference; import com.boot.domain.User; import com.boot.service.TestService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/") public class TestController { @Reference(version = "1.0.0") private TestService testService; @GetMapping("hello") public String hello() { return testService.sayHello("Hello springboot and dubbo!"); } @GetMapping("user") public User user() { return testService.findUser(); } }
第二步:在resources下創(chuàng)建一個(gè)config文件夾,在config下創(chuàng)建spring-dubbo.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 <dubbo:application name="consumer"/> <dubbo:registry address="zookeeper://127.0.0.1:2181"/> <dubbo:annotation package="com.boot.controller"/> </beans>
第三步:在com.boot包下新建Springboot的入口類,創(chuàng)建一個(gè)ConsumerApplication.java文件。
package com.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource; @SpringBootApplication @ImportResource({"classpath:config/spring-dubbo.xml"}) public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } }
第四步:最后在resources文件夾下面創(chuàng)建application.yml,Springboot的配置文件。
# 在這里編寫(xiě)springboot的配置信息 server: port: 8080 context-path: /
至此,代碼部分已經(jīng)編寫(xiě)完畢?。。?/p>
4. 安裝zookeeper注冊(cè)中心到電腦中
下載地址:zookeeper下載地址
點(diǎn)擊后下載適合自己的版本,如圖所示
zookeeper的下載
下載完畢后,解壓縮該文件,進(jìn)入conf文件夾,拷貝一份zoo_sample.cfg,在該目錄生成zoo.cfg文件。
拷貝生成zoo.cfg文件
進(jìn)入bin目錄,運(yùn)行zkServer.cmd文件。
運(yùn)行zkServer.cmd
點(diǎn)擊運(yùn)行后出現(xiàn)如下圖所示
運(yùn)行成功
5. 現(xiàn)在終于可以運(yùn)行我們的項(xiàng)目了
先運(yùn)行我們的ProviderApplication.java文件的main函數(shù),再運(yùn)行ConsumerApplication.java文件的main函數(shù)。
打開(kāi)瀏覽器訪問(wèn)
http://localhost:8080/hello
http://localhost:8080/user
好了,激動(dòng)人心的時(shí)刻到了,我們終于完成了Springboot和Dubbo的集成了。
項(xiàng)目地址:springboot-dubbo項(xiàng)目GitHub地址
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java并發(fā)編程中的synchronized關(guān)鍵字詳細(xì)解讀
這篇文章主要介紹了Java并發(fā)編程中的synchronized關(guān)鍵字詳細(xì)解讀,在Java早期版本中,synchronized 屬于 重量級(jí)鎖,效率低下,這是因?yàn)楸O(jiān)視器鎖(monitor)是依賴于底層的操作系統(tǒng)的Mutex Lock來(lái)實(shí)現(xiàn)的,Java 的線程是映射到操作系統(tǒng)的原生線程之上的,需要的朋友可以參考下2023-12-12MyBatis-plus的五種批量插入方式對(duì)比分析
本文主要介紹了MyBatis-plus的五種批量插入方式對(duì)比分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Java.lang.NullPointerException的錯(cuò)誤解決
Java中NullPointerException是一種常見(jiàn)的運(yùn)行時(shí)異常,通常發(fā)生在嘗試調(diào)用null對(duì)象的方法或訪問(wèn)其屬性時(shí),具有一定的參考價(jià)值,感興趣的可以了解一下2024-09-09詳解Spring連接數(shù)據(jù)庫(kù)的幾種常用的方式
本篇文章主要介紹了Spring連接數(shù)據(jù)庫(kù)的幾種常用的方式,具有一定的參考價(jià)值,有需要的可以了解一下。2016-12-12Java基數(shù)排序radix sort原理及用法解析
這篇文章主要介紹了Java基數(shù)排序radix sort原理及用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Java數(shù)據(jù)結(jié)構(gòu)BFS廣搜法解決迷宮問(wèn)題
廣搜BFS的基本思想是: 首先訪問(wèn)初始點(diǎn)v并將其標(biāo)志為已經(jīng)訪問(wèn)。接著通過(guò)鄰接關(guān)系將鄰接點(diǎn)入隊(duì)。然后每訪問(wèn)過(guò)一個(gè)頂點(diǎn)則出隊(duì)。按照順序,訪問(wèn)每一個(gè)頂點(diǎn)的所有未被訪問(wèn)過(guò)的頂點(diǎn)直到所有的頂點(diǎn)均被訪問(wèn)過(guò)。廣度優(yōu)先遍歷類似與層次遍歷2022-04-04