首页 > 其他分享 >duboo注解使用详解

duboo注解使用详解

时间:2023-06-04 13:03:12浏览次数:35  
标签:xml duboo org 详解 context import 注解 com public


一、背景

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行。

当越来越的的接口与实现类的增加后,duboo的xml配置会越来越多,为了防止几百几千行的代码,减少开发人员配置xml的工作量,使用duboo的注解模式,减少配置多出问题多的可能性!

二、Dubbo使用案例

Duboo注解

接口类项目:DubboServiceInterface

 

duboo注解使用详解_spring boot

仅仅是一个接口类项目!接口是普通接口!

 

duboo注解使用详解_maven_02

注意:将接口类项目打包成jar分别放入服务端项目跟客户端项目!

服务端项目:DubboServiceProvider

 

duboo注解使用详解_spring_03

实现类fooserviceImpl.java

 

duboo注解使用详解_spring_04

package com.alibaba.dubbo.demo.imp;
import com.alibaba.dubbo.config.annotation.Service;
import com.alibaba.dubbo.demo.DemoService;
@Service(version="1.0")
public class FooServiceImpl implements DemoService {
 @Override
 public String sayHello(String name) {
        return "Hello " + name;
    }
}

web.xml 配置扫描内容

 

duboo注解使用详解_spring boot_05

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>DubboServiceProvider</display-name>
 <servlet>
 <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
 <servlet-name>spring</servlet-name>
 <url-pattern>*</url-pattern>
 </servlet-mapping> 
   <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
    <context-param>
 <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext.xml</param-value>
 </context-param>
</web-app>

applicationContext.xml 配置

 

duboo注解使用详解_spring boot_06

<?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.properties配置 -->
   <dubbo:application name="test" />
<!--    链接zookeeper -->
   <dubbo:registry address="zookeeper://127.0.0.1:2181/" group="test"/>
   <dubbo:consumer timeout="5000"/>
   <!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->
  <dubbo:annotation package="com.unj.dubbotest.serviceImp" /> 
   
 <!-- xml配置 : 声明需要暴露的服务接口 -->
<!--      <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" /> -->
    <!-- xml配置 :和本地bean一样实现服务-->
<!--     <bean id="demoService" class="com.unj.dubbotest.serviceImp.FooServiceImpl" /> -->
</beans>

测试类Provider

 

duboo注解使用详解_zookeeper_07

package com.alibaba.dubbo.test;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
 @Before
 public void setUp() throws Exception {
 }
 @Test
 public void testMain() throws IOException {
 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
 new String[] { "applicationContext.xml" });
 context.start();
 System.in.read();// 按任意键退出 
 }
}

lib下的jar包

 

duboo注解使用详解_spring boot_08

客户端项目:DubboServiceConsumer

 

duboo注解使用详解_java_09

web.xml 配置扫描内容

 

duboo注解使用详解_spring_10

applicationContext.xml文件

 

duboo注解使用详解_spring_11

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"  
 xmlns:context="http://www.springframework.org/schema/context"
    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.properties配置 -->
   <dubbo:application name="xx" />
   <dubbo:registry address="zookeeper://127.0.0.1:2181" />
   <dubbo:consumer timeout="5000"/>
 <!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->
    <dubbo:annotation package="com.unj.dubbotest.action" />
</beans>

测试类:Consumer

 

duboo注解使用详解_zookeeper_12

package com.unj.dubbotest.action;
import java.io.IOException;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.dubbo.demo.DemoService;
public class Consumer{
 @Reference(version = "1.0")
 private DemoService demoService;
 @Test
  public  void mainTest() throws IOException {
   ClassPathXmlApplicationContext context =new ClassPathXmlApplicationContext(
   new String[] {"applicationContext.xml"}); 
         context.start(); 
          demoService = (DemoService)context.getBean("demoService"); // 获取远程服务代理 
         String hello = demoService.sayHello("world"); // 执行远程方法 
         System.out.println( hello ); // 显示调用结果 
     }
}

lib下的jar包

duboo注解使用详解_java_13

duboo注解使用详解_zookeeper_14

标签:xml,duboo,org,详解,context,import,注解,com,public
From: https://blog.51cto.com/u_13538361/6410417

相关文章

  • Async异步注解
    @RestController@Slf4jpublicclassThread04{@AutowiredprivateOrderManageorderManage;@GetMapping("addOrder")publicStringaddOrder(){log.info("1");//异步处理orderManage.asyncLog();......
  • Java 容器详解:使用与案例
    Java容器是一套工具,用于存储数据和对象。可以与C++的STL类比。Java容器也称为JavaCollectionFramework(JCF)。除了存储对象的容器之外,还提供了一套工具类,用于处理和操作容器中的对象。总体来说,这是一个框架,它包含了Java对象容器和工具类。一、概览容器主要包括Collection......
  • 高效稳定的通用增量 Checkpoint 详解之二:性能分析评估
    作者:雷颜菲、夏瑞、俞航翔、梅源|阿里云Flink存储引擎团队摘要:我们在“Flink1.15新功能架构解析:高效稳定的通用增量Checkpoint”【1】一文介绍了通用增量Checkpoint的原理和背后的思考以及执行性能、空间放大等方面的初步测试结果。该功能在Flink1.16中经过优化,已达到生......
  • 前置知识:方法递归的算法、执行流程详解
       ......
  • upload-labs 1到21题通关详解
    第一题直接查看源码functioncheckFile(){varfile=document.getElementsByName('upload_file')[0].value;if(file==null||file==""){alert("请选择要上传的文件!");returnfalse;}//定义允许上传的文件类型varal......
  • 分布式医疗云平台(项目功能简介截图)【系统管理(科室管理、用户管理、角色管理、菜单管理
    项目功能截图1.系统管理 1.1.科室管理 1.2、用户管理1.3、角色管理 1.4、菜单管理  1.5、字典管理1.6、通知公告管理 1.7、登陆日志管理 1.8、操作日志管理 1.9、检查费用设置 1.10,挂号费用设置 项目功能截图1.系统管理 1.1.科室管理1.1.1、科室查询 1.1.2、科室添加......
  • Flink中的Window和Time详解
    Window(窗口)Flink认为批处理是流处理的一个特例,所以Flink底层引擎是一个流式引擎,在上面实现了流处理和批处理。而Window就是从流处理到批处理的一个桥梁。通常来讲,Window是一种可以把无界数据切割为有界数据块的手段例如,对流中的所有元素进行计数是不可能的,因为通......
  • Flink详解
    什么是FlinkApacheFlink是一个开源的分布式,高性能,高可用,准确的流处理框架。分布式:表示flink程序可以运行在很多台机器上,高性能:表示Flink处理性能比较高高可用:表示flink支持程序的自动重启机制。准确的:表示flink可以保证处理数据的准确性。Flink支持流处理和批处理,虽然我们......
  • Sqoop详解
    Sqoop下载及安装Sqoop目前有两大版本,Sqoop1和Sqoop2,这两个版本都是一直在维护者的,所以使用哪个版本都可以。这两个版本我都用过,还是感觉Sqoop1用起来比较方便,使用Sqoop1的时候可以将具体的命令全部都写到脚本中,这样看起来是比较清晰的,但是有一个弊端,就是在操作MySQL的时候,MySQL......
  • 树状数组详解——本质上就是空间换时间,可以解决大部分基于区间上的更新以及求和问题
     943.区间和查询-Immutable 中文 English 给一个整数数组nums,求出下标从i到j的元素和(i≤j),i跟j对应的元素也包括在内。 样例样例1输入:nums=[-2,0,3,-5,2,-1]sumRange(0,2)sumRange(2,5)sumRange(0,5)输出:1-1-3解释:sumRange(0,2)->(-2......