您好,登錄后才能下訂單哦!
這篇文章主要講解了“springboot分布式整合dubbo的方式是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“springboot分布式整合dubbo的方式是什么”吧!
Dubbo是Alibaba開源的分布式服務框架,它最大的特點是按照分層的方式來架構,使用這種方式可以使各個層之間解耦合(或者最大限度地松耦合)。從服務模型的角度來看,Dubbo采用的是一種非常簡單的模型,要么是提供方提供服務,要么是消費方消費服務,所以基于這一點可以抽象出服務提供方(Provider)和服務消費方(Consumer)兩個角色。
//需要額外引入的jar包 提供者 <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency>
spring配置方式
<?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="user-service-provider"></dubbo:application> <!-- 指定注冊中心的地址,將來服務提供者要向注冊中心進行注冊--> <dubbo:registry address="zookeeper://192.168.192.3:2181"></dubbo:registry> <!-- 指定將來服務消費者消費我的時候使用的rpc協議 --> <dubbo:protocol name="dubbo" port="11123"></dubbo:protocol> <!-- 服務發布 --> <bean id="userService" class="com.oracle.shop.user.service.impl.UserServiceImpl"></bean> <dubbo:service interface="com.oracle.shop.user.service.UserService" ref="userService"></dubbo:service> </beans>
springboot配置方式
#dubbo的配置 #服務名 dubbo.application.name=user-provider #注冊中心地址 dubbo.registry.address=zookeeper://192.168.192.3:2181 #使用的協議以及端口號 dubbo.protocol.name=dubbo dubbo.protocol.port=11111
發布服務的方式
在相應的實現類上添加注解
import com.alibaba.dubbo.config.annotation.Service; import com.oracle.shopping.user.mapper.MenuMapper; import com.oracle.shopping.user.po.Menu; import com.oracle.shopping.user.service.MenuService; import javax.annotation.Resource; @Service //dubbo的注解表示發布該類 @org.springframework.stereotype.Service//spring的注解表示會在啟動時實例化該類 public class MenuServiceImpl implements MenuService { @Resource private MenuMapper menuMapper; @Override public int deleteByPrimaryKey(String id) { return menuMapper.deleteByPrimaryKey(id); } @Override public int insert(Menu record) { return menuMapper.insert(record); } @Override public int insertSelective(Menu record) { return menuMapper.insertSelective(record); } @Override public Menu selectByPrimaryKey(String id) { return menuMapper.selectByPrimaryKey(id); } @Override public int updateByPrimaryKeySelective(Menu record) { return menuMapper.updateByPrimaryKeySelective(record); } @Override public int updateByPrimaryKey(Menu record) { return menuMapper.updateByPrimaryKey(record); } }
啟動類中添加dubbo的掃包器,設置掃描路徑
@SpringBootApplication @MapperScan("com.oracle.shopping.user.mapper") @EnableTransactionManagement @DubboComponentScan("com.oracle.shopping.user.service.impl") public class UserProviderApp { public static void main(String[] args) { SpringApplication.run(UserProviderApp.class, args); } }
<dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency>
spring配置方式
<?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="user-web-consumer"></dubbo:application> <!-- 指定注冊中心的地址,將來服務提供者要向注冊中心進行注冊--> <dubbo:registry address="zookeeper://192.168.192.3:2181"></dubbo:registry> <!-- 訂閱具體服務,讓dubbo幫咱們生成動態代理客戶端對象--> <dubbo:reference interface="com.oracle.shop.user.service.UserService" id="userService"></dubbo:reference> <dubbo:reference interface="com.oracle.shop.order.service.OrderService" id="orderService"></dubbo:reference> </beans>
在controller中進行依賴注入和調用
@Controller @RequestMapping("/user") public class UserController { //通過動態代理的方式生成的動態代理類 @Autowired(required = false) private UserService userService; //不進行檢查,防止報錯無法運行 @Autowired(required = false) private OrderService orderService; @RequestMapping("/a") public @ResponseBody User detail(){ return userService.findUserById(1); } @RequestMapping("/b") public @ResponseBody Orders details(){ return orderService.findUserById(1); } }
springboot配置方式
#指定自己的名稱 dubbo.application.name=user-consumer #指定注冊中心的地址 dubbo.registry.address=zookeeper://192.168.192.3:2181
在controller當中使用注解聲明要使用的服務(實現類)
@RestController @RequestMapping("/user") public class UserController { //表示要使用的服務 @Reference(interfaceName = "com.oracle.shopping.user.service.UserService") private UserService userService; @Autowired private RedisTemplate redisTemplate; @RequestMapping("/detail") public User detail(String id){ return userService.selectByPrimaryKey(id); } }
啟動類中設置dobbo注解的掃描路徑
@SpringBootApplication @DubboComponentScan("com.oracle.shopping.user.controller") public class UserConsumerApp { public static void main(String[] args) { SpringApplication.run(UserConsumerApp.class ); } }
感謝各位的閱讀,以上就是“springboot分布式整合dubbo的方式是什么”的內容了,經過本文的學習后,相信大家對springboot分布式整合dubbo的方式是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。