詳解Springboot整合Dubbo之代碼集成和發(fā)布
本文介紹了Springboot整合Dubbo之代碼集成和發(fā)布,分享給大家,具體如下:
1. boot-dubbo-api相關(guān)
打開boot-dubbo-api項目,正在src/main/java下創(chuàng)建一個包,并創(chuàng)建你需要dubbo暴露的接口TestService.java,并創(chuàng)建一個實體類用于測試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)
首先我們先看看總共需要編寫的內(nèi)容,文件的層次結(jié)構(gòu)圖

boot-dubbo-provider項目結(jié)構(gòu)圖
第一步:我們首先實現(xiàn)我們在boot-dubbo-api上定義的接口,創(chuàng)建一個TestServiceImpl類并實現(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)建一個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"/> <!-- 注冊中心的ip地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181"/> <!-- 掃描注解包路徑,多個包用逗號分隔,不填pacakge表示掃描當(dāng)前ApplicationContext中所有的類 --> <dubbo:annotation package="com.boot.service.impl"/> </beans>
第三步:在com.boot包下新建Springboot的入口類,創(chuàng)建一個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的配置文件。
# 在這里編寫springboot的配置信息
3. boot-dubbo-consumer相關(guān)
首先我們先看看總共需要編寫的內(nèi)容,文件的層次結(jié)構(gòu)圖

boot-dubbo-consumer項目結(jié)構(gòu)圖
第一步:編寫我們的Controller控制類,在com.boot.controller包下新建一個TestController類,編寫訪問地址。
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)建一個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)建一個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的配置文件。
# 在這里編寫springboot的配置信息 server: port: 8080 context-path: /
至此,代碼部分已經(jīng)編寫完畢?。。?/p>
4. 安裝zookeeper注冊中心到電腦中
下載地址:zookeeper下載地址
點擊后下載適合自己的版本,如圖所示

zookeeper的下載
下載完畢后,解壓縮該文件,進(jìn)入conf文件夾,拷貝一份zoo_sample.cfg,在該目錄生成zoo.cfg文件。

拷貝生成zoo.cfg文件
進(jìn)入bin目錄,運(yùn)行zkServer.cmd文件。

運(yùn)行zkServer.cmd
點擊運(yùn)行后出現(xiàn)如下圖所示

運(yùn)行成功
5. 現(xiàn)在終于可以運(yùn)行我們的項目了
先運(yùn)行我們的ProviderApplication.java文件的main函數(shù),再運(yùn)行ConsumerApplication.java文件的main函數(shù)。
打開瀏覽器訪問
http://localhost:8080/hello
http://localhost:8080/user
好了,激動人心的時刻到了,我們終于完成了Springboot和Dubbo的集成了。
項目地址:springboot-dubbo項目GitHub地址
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中I/O流讀取數(shù)據(jù)不完整的問題解決
本文主要介紹了ava中I/O流讀取數(shù)據(jù)不完整的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
JAVA實現(xiàn)DOC轉(zhuǎn)PDF的示例代碼
Word作為目前主流的文本編輯軟件之一,功能十分強(qiáng)大,但是在傳輸?shù)臅r候不穩(wěn)定,那么如何從DOC轉(zhuǎn)PDF,本文就來介紹一下,感興趣的可以了解一下2021-08-08
MyBatis中?@Mapper?和?@MapperScan?的區(qū)別與使用解析
本文介紹了SpringBoot中MyBatis的兩個常用注解:@Mapper和@MapperScan,@Mapper用于標(biāo)記單個Mapper接口,而@MapperScan用于批量掃描指定包下的所有Mapper接口,兩者都有各自適用的場景,選擇合適的注解可以提高開發(fā)效率并使代碼更加簡潔,感興趣的朋友一起看看吧2025-01-01

