一、背景 
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行。 
当越来越的的接口与实现类的增加后,duboo的xml配置会越来越多,为了防止几百几千行的代码,减少开发人员配置xml的工作量,使用duboo的注解模式,减少配置多出问题多的可能性!

二、Dubbo使用案例 
Duboo注解 
接口类项目:DubboServiceInterface

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

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

实现类fooserviceImpl.java

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 配置扫描内容

<?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 配置

<?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

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包

客户端项目:DubboServiceConsumer

web.xml 配置扫描内容

applicationContext.xml文件

<?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

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注解使用详解的更多相关文章

  1. 转:springmvc常用注解标签详解

    Spring5:@Autowired注解.@Resource注解和@Service注解 - IT·达人 - 博客园--这篇顺序渐进,讲得超级好--此人博客很不错http://www.cnblogs.c ...

  2. Java 注解用法详解——@SuppressWarnings

    转自: https://www.cnblogs.com/fsjohnhuang/p/4040785.html Java魔法堂:注解用法详解——@SuppressWarnings   一.前言 编码时我 ...

  3. @SuppressWarnings注解用法详解

    @SuppressWarnings注解用法详解 今天来谈谈@SuppressWarnings注解的作用. J2SE 提供的最后一个批注是 @SuppressWarnings.该批注的作用是给编译器一条 ...

  4. Spring 注解@Value详解

    一.spring(基础10) 注解@Value详解[1] 一 配置方式 @value需要参数,这里参数可以是两种形式: [html] view plain copy @Value("#{co ...

  5. Java注解(Annotation)详解

    转: Java注解(Annotation)详解 幻海流心 2018.05.23 15:20 字数 1775 阅读 380评论 0喜欢 1 Java注解(Annotation)详解 1.Annotati ...

  6. springmvc常用注解标签详解

    1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ...

  7. android注解使用详解(图文)

    在使用Java的SSH框架的时候,一直在感叹注解真是方便啊,关于注解的原理,大家可以参考我的另一片文章Java注解详解.最近有时间研究了android注解的使用,今天与大家分享一下. android中 ...

  8. springmvc常用注解标签详解【转】

    转载自:http://www.cnblogs.com/leskang/p/5445698.html 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由Disp ...

  9. spring security 注解@EnableGlobalMethodSecurity详解

     1.Spring Security默认是禁用注解的,要想开启注解,需要在继承WebSecurityConfigurerAdapter的类上加@EnableGlobalMethodSecurity注解 ...

随机推荐

  1. 数据可视化(Echart) :柱状图、折线图、饼图等六种基本图表的特点及适用场合

    数据可视化(Echart) 柱状图.折线图.饼图等六种基本图表的特点及适用场合 参考网址 效果图 源码 <!DOCTYPE html> <html> <head> ...

  2. Http协议中get和post的区别 转载https://www.cnblogs.com/lexiaofei/p/http.html

    get(默认值)是通过URL传递表单值,数据追加在action属性后面. post传递的表单值是隐藏到http报文体中,url中看不到. get是通过url传递表单值,post通过url看不到表单域的 ...

  3. HDU 6628 permutation 1 (暴力)

    2019 杭电多校 5 1005 题目链接:HDU 6628 比赛链接:2019 Multi-University Training Contest 5 Problem Description A s ...

  4. 拯救 Out Of Memory,8个案例带你飞!

    来自:唐尤华 https://bloggceasy.files.wordpress.com/2015/05/outofmemoryerror2.pdf 1. Java 堆空间 发生频率:5颗星 造成原 ...

  5. python学习9—文件基本操作与高级操作

    python学习9—文件基本操作与高级操作 1. 文件基本操作 打开文件,获得文件句柄:f = open('filename',encoding='utf-8'),open会查询操作系统的编码方式,并 ...

  6. Linux --赋予普通用户root 权限

    Linux的普通用户在安装一些东西的时候或者执行命令的时候,终端始终会提示权限不够,我们会将这个普通用户赋予root权限,但是,和root还是有区别的,因为只能执行root规定好的一些操作命令. 1. ...

  7. Spring - @ManagedResource, @ManagedOperation, @ManagedAttribute

    总结 通过annotation (@ManagedResource, @ManagedOperation, @ManagedAttribute)注解注册MBean到JMX实现监控java运行状态 参考 ...

  8. vue-cli 新手 搭建项目 一

     新手入坑vue 搭建项目  一.安装 vue-cli 1.打开cmd 输入命令(已自行安装好npm node等) npm install --global vue-cli  (全局安装) 二.创建项 ...

  9. CSS 圣杯布局

    前端的两个经典布局想必大家都有多了解--圣杯布局和双飞翼布局,因为它既能体现你懂HTML结构又能体现出你对DIV+CSS布局的掌握. 事实上,圣杯布局其实和双飞翼布局是一回事.它们实现的都是三栏布局, ...

  10. JsJquery小技巧

    JS对URL编码 :encodeURI() .Net对URL解码:HttpUtility.UrlDecode() 格式化输出百分数 function formatePercent(data){     ...