500VIP源码下载搭建:http://fanshubbs.com/thread-229-1-1.html

当使用这个demoService的时候可以肯定的是一定有个DemoService的具体实现可供使用,DubboNamespaceHandler中有这样一段代码:

1
registerBeanDefinitionParser("reference", new DubboBeanDefinitionParser(ReferenceBean.class,false));

解析上面配置在namespace dubbo下的reference。DubboBeanDefinitionParser相关代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
public DubboBeanDefinitionParser(Class<?> beanClass, boolean required) {
this.beanClass = beanClass;
this.required = required;
}
public BeanDefinition parse(Element element, ParserContext parserContext) {
return parse(element, parserContext, beanClass, required);
}
// 关键部分
private static BeanDefinition parse(Element element, ParserContext parserContext, Class<?> beanClass, boolean required) {
RootBeanDefinition beanDefinition = new RootBeanDefinition();
// 设置bean class,in this case it is ReferenceBean.class
beanDefinition.setBeanClass(beanClass);
beanDefinition.setLazyInit(false);
String id = element.getAttribute("id");
// some ops...
if (id != null && id.length() > 0) {
if (parserContext.getRegistry().containsBeanDefinition(id)) {
throw new IllegalStateException("Duplicate spring bean id " + id);
}
parserContext.getRegistry().registerBeanDefinition(id, beanDefinition);
beanDefinition.getPropertyValues().addPropertyValue("id", id);
}
// some ops...
// 遍历setter and getter设置属性值
for (Method setter : beanClass.getMethods()) {
String name = setter.getName();
if (name.length() > 3 && name.startsWith("set")
&& Modifier.isPublic(setter.getModifiers())
&& setter.getParameterTypes().length == 1) {
Class<?> type = setter.getParameterTypes()[0];
String property = StringUtils.camelToSplitName(name.substring(3, 4).toLowerCase() + name.substring(4), "-");
if(...){
// some ops...
}else {
String value = element.getAttribute(property);
if (value != null) {
value = value.trim();
if (value.length() > 0) {
// 部分省略...
Object reference;
if (isPrimitive(type)) {
if ("async".equals(property) && "false".equals(value)
|| "timeout".equals(property) && "0".equals(value)
|| "delay".equals(property) && "0".equals(value)
|| "version".equals(property) && "0.0.0".equals(value)
|| "stat".equals(property) && "-1".equals(value)
|| "reliable".equals(property) && "false".equals(value)) {
// 兼容旧版本xsd中的default值
value = null;
}
reference = value;
}
// 大批省略...
// 这里会将interface这个attribute的值设置在ReferenceBean的父类ReferenceConfig的interfaceName上通过method:setInterface(String)
beanDefinition.getPropertyValues().addPropertyValue(property, reference);
}
}
}
}
}
}
// 省略...
return beanDefinition;
}

上面两个关键的属性值id,interface都设置在了bean上,后面会用到。ReferenceConfig中的settter:setInterface用来设置interface:

1
2
3
4
5
6
public void setInterface(String interfaceName) {
this.interfaceName = interfaceName;
if (id == null || id.length() == 0) {
id = interfaceName;
}
}

参考ReferenceBean Hierarchy:

《福运来源码下载》

《2017暴雪完整源码下载》:http://fanshubbs.com/thread-250-1-1.html

《拉菲源码分享下载》

500VIP源码下载相关推荐

  1. 500vip网全套源码下载 带精美手机版源码

    500vip网全套源码下载 带精美手机版源码 源码说明:         今天给大家分享的源码这个源码是"500vip网全套源码下载 带精美手机版源码" ,以下所有截图均为本站源码 ...

  2. android源码下载方法 批量下载 基于windows os

    安装win版的Gitbash, 在这里 http://msysgit.googlecode.com/files/Git-1.6.0.2-preview20080923.exe. 选择默认安装路径(否则 ...

  3. linux 浏览器源码下载,Android开发:图片浏览器源码

    Android 图片浏览器源码,是你学习Android很好的例子,希望对你的学习有帮助. main.xml android:layout_width="fill_parent" a ...

  4. 模仿Hibernate的逆向工程_java版_源码下载

    在这篇blog:"Hibernate逆向工程原理_java版本"中谈到了Hibernate逆向工程原理. 我喜欢理论和实践相结合....so,今天我试着模仿hibernate的逆向 ...

  5. java验证码源码_Java通用验证码程序及应用示例(提供源码下载)

    评论 # re: Java通用验证码程序及应用示例(提供源码下载) 2009-11-27 17:09 零全零美 多谢博主写出这么好的总结,如果能加上汉字验证码,会更完美!  回复  更多评论 # re ...

  6. spark最新源码下载并导入到开发环境下助推高质量代码(Scala IDEA for Eclipse和IntelliJ IDEA皆适用)(以spark2.2.0源码包为例)(图文详解)...

    不多说,直接上干货! 前言   其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. ...

  7. I.MX6 android 源码下载

    /************************************************************************** I.MX6 android 源码下载* 说明:* ...

  8. 9款精致HTML5/jQuery日历时钟控件源码下载(源码请见百度云) 链接:http://pan.baidu.com/s/1geIXe75 密码:7m4a...

    现在的网页应用越来越丰富,我们在网页中填写日期和时间已经再也不用手动输入了,而是使用各种各样的日期时间选择控件,大部分样式华丽的日期选择和日历控件都是基于jQuery和HTML5的,比如今天要分享的这 ...

  9. php拼音模糊查询,PHP模糊查询技术实例分析【附源码下载】

    本文实例讲述了PHP模糊查询技术.分享给大家供大家参考,具体如下: 简介 从本质上揭密PHP模糊查询技术 功能 根据输入的关键字查找相关用户 PHP用户查询器案例分析 课程目标 掌握PHP模糊技术的应 ...

  10. 通用社区登陆组件技术分享(开源)下篇:OAuth 源码下载及原理解说

    原文http://www.cnblogs.com/cyq1162/archive/2012/11/07/2756848.html 上节内容: 1:通用社区登陆组件技术分享(开源)上篇:OAuth 授权 ...

最新文章

  1. 论文荐读 | NLP之Attention从入门到精通
  2. 用python玩转数据测试与作业_用Python玩转数据分析10
  3. 调试 Dockerfile - 每天5分钟玩转 Docker 容器技术(15)
  4. 在GridView里使用CheckBox
  5. window.location.href和window.location.replace
  6. Codeforces Round #131 (Div. 2) B. Hometask dp
  7. 红皮书--EOF与BOF
  8. python立方尾不变
  9. 【AI语音】九联UNT402A_通刷_纯净精简_免费线刷固件包
  10. 理工生文言文的致谢——小木虫
  11. 计算机系统动态库修复,一键修复!动态库文件 mfc100u.dll 修复使用说明
  12. 【windows】中下载并安装Python(简单明了)
  13. 压缩包的加密、去除密码、解密
  14. Android人生整理第二章:Java编程第一节-对象导论
  15. 微信公众号开发官方定制ui
  16. 学习OpenCV的学习笔记系列(三)显示图片及视频
  17. 解决Notepad--在ubuntu16.04无法运行问题
  18. office 2010安装
  19. 20151221-精典语录
  20. 表单手机号 邮箱 qq检验工具类

热门文章

  1. 容器技术—docker stack
  2. debian adsl上网
  3. 路演商业计划书PPT模板
  4. oracle 工具ODM,oracle ODM 数据挖掘笔记
  5. Java Web 高性能开发,第 2 部分: 前端的高性能
  6. CDH5安装过程中cloudera.server.cmf.Main: Server failed.
  7. 81章 老子1章到_三曜道长解读道德经: 信言不美 第81章
  8. 存储系统概述——SRAM静态随机存储器
  9. Character.isAlphabetic()方法判断中文字符时,返回值为true
  10. Camtasia 2019卸载-无痕强力卸载