前言
dubbo框架與spring boot整合碳锈,不需要導(dǎo)入其他的包捂敌,也不需要繁瑣的重復(fù)配置
我這里使用的是idea+gradle4.8+spring boot2.x構(gòu)建本項(xiàng)目的接下來(lái)講解如何配置
總體來(lái)說(shuō)分為一下幾個(gè)步驟
1.創(chuàng)建一個(gè)公共Module,把bean,和接口都寫進(jìn)此module
2.創(chuàng)建服務(wù)提供者回怜,依賴公共Module
3.添加dubbo-spring boot依賴
4.編寫配置文件
5.暴露服務(wù)Service
6.啟動(dòng)類上面加上EnableDubbo注解仓洼,啟動(dòng)
7.服務(wù)消費(fèi)者,一樣之
1.創(chuàng)建公共Module
File->new->project->spring boot項(xiàng)目扇单,一個(gè)服務(wù)都不需要,直接創(chuàng)建
我這里只寫了2個(gè)接口奠旺,然后公共Module創(chuàng)建完畢
2.創(chuàng)建服務(wù)提供者
新建spring boot項(xiàng)目蜘澜,導(dǎo)入spring boot整合dubbo的依賴,添加這個(gè)依賴之后凉倚,里面的一些相關(guān)包都給你引入進(jìn)來(lái)了兼都,比如說(shuō)zookeeper,dubbo,logback等等
implementation 'com.alibaba.boot:dubbo-spring-boot-starter:0.2.0'
然后依賴之前創(chuàng)建好的Module,File->Project Structure->Module->import Module->ok
然后我們編寫Service 層,實(shí)現(xiàn)module層的UserService接口,
import com.alibaba.dubbo.config.annotation.Service;
import com.wocus.service.service.UserService;
import org.springframework.stereotype.Component;
/**
* @program: dubbo_service01
* @description: 用戶服務(wù)實(shí)現(xiàn)類
* @author: jiang wei
* @create: 2019-03-18 11:52
*/
@Service(version = "1.0.0")
@Component
public class UserServiceImpl implements UserService {
@Override
public String selectByUserId(String id) {
return "傳遞了一個(gè)值"+id+"使用的是20081服務(wù)器";
}
}
注意:Service注解dubbo和這個(gè)同名稽寒,dubbo的Service是暴露服務(wù),因此趟章,我們需要在類上注明@Service注解杏糙,以前的Service注解用Component取而代之即可,這樣蚓土,服務(wù)就暴露出去了
接下來(lái)就是配置文件
dubbo.application.name=dubbo-service01 #服務(wù)應(yīng)用名
dubbo.registry.address=zookeeper://10.10.80.221:2181 //注冊(cè)中心地址
dubbo.protocol.name=dubbo //dubbo名稱
dubbo.protocol.port=20881 //dubbo端口
dubbo.provider.loadbalance=random //負(fù)載均衡算法
dubbo.monitor.protocol=registry //自動(dòng)發(fā)現(xiàn)服務(wù)
然后在啟動(dòng)類宏侍,注解@EnableDubbo啟動(dòng),然后再看dubbo admin控制臺(tái),服務(wù)以及成功注冊(cè)
3.創(chuàng)建服務(wù)消費(fèi)者
和創(chuàng)建服務(wù)提供者一樣蜀漆,新建spring boot項(xiàng)目谅河,依賴dubbo,然后編寫Controller去消費(fèi)服務(wù),啟動(dòng)類上加上注解@EnableDubbo,編寫配置文件
import com.alibaba.dubbo.config.annotation.Reference;
import com.wocus.service.service.UserService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @program: dubbo_customer01
* @description: 用戶服務(wù)類
* @author: jiang wei
* @create: 2019-03-19 09:08
*/
@RestController
public class UserController {
@Reference
private UserService userService;
@RequestMapping("/user")
public String getUser(){
return userService.selectByUserId("21");
}
}
這里用dubbo的@Referenece注解就遠(yuǎn)程調(diào)用了另一臺(tái)服務(wù)器的service了,打包DubboAdmin控制臺(tái)也可以看得到绷耍,有消費(fèi)服務(wù)了
基于dubbo的項(xiàng)目搭建已經(jīng)完成了吐限,后面文章,將講解一些超時(shí)配置褂始,實(shí)時(shí)檢測(cè)诸典,本地策略,dubbo直連等等