`
游伯度
  • 浏览: 21917 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
双十一过去了,终于可以把这篇博客补上了。 本文将分析BeanWrapperImpl,出现了大量的源码。如果你对BeanWrapper有相当的了解,请略过;如果想稍微了解一下BeanWrapper,可能需要关注一下源码。 -------------------------------------------- 学习 Spring 核心是一件比较耗费精力的过程,代码太多,代码的层次也比较深。每次我都是在上午看代码,把一天中精力比较集中的时间段留给了他。在【Spring IOC -依赖注入(概述 getBean)】一文中,我们了解了 Spring 依赖注入的大概过程。本次我们要着重说明一下依 ...
1.写在前面的废话 前面几次关于 IOC 的分享完成了对 Spring 对资源的加载的一个概述。读者可以对 Spring 加载资源有一个大致的了解。今天我们将开始了解当资源加载到 Spring 容器中后,如何进行依赖注入的。   学习 Spring,有一个非常重要的概念就是控制反转,控制反转就是要把资源装配工作丢给 Spring 容器,业务只需要知道自己需要什么样的服务就可以了。Spring 装配 Bean 的依赖是一个比较复杂的过程,基本上是横看成岭侧成峰,远近高低各不同的状态。今天我们从一个基本了解的角度大概了解一下依赖注入的整个过程。  
本次分享还是要重复上一次分享的内容(Spring IOC - BeanDefinition注册),着重 Bean 的注册过程。上次我们说到 Bean 通过解析后被封装为 BeanDefinitionHolder 中,最终存放在 beanDefinitionMap 中。那么对应自定义 schema 的 Bean 解析 Spring 是怎么做到的,他又是怎样被注册到容器中的呢,这个两个问题,是我们这次要分析的。   在进行 Spring 源码分析前,如果你还不了解如何配置自己的 schema 来定义 Bean 你可以在网上自己查询一下,或者可以看看这个分享(自定义 Schema 解析 Spr ...
1.写在前面的废话 从 Spring 2.0 以后 Spring 就支持了客户端自定义 Schema 来表示 Bean 定义。同时也提供了通用的支持类来帮助完成复杂的解析工作。至于他的优点,个人感觉是当需要复杂的构造对象时,自定义 Schema 来定义 Bean 是 ...
上次分享中,提到了 Spring 把查找出来的资源加载解析成为 Document 对象,供后面的 BeanDefinition 注册使用。本次分享,就来看看 BeanDefinition 是如何注册的,以及他注册到什么地方。   1. 分析源码了解 BeanDefinition 的注册过程    1.1org.springframework.beans.factory.xml.XmlBeanDefinitionReader#registerBeanDefinitions public int registerBeanDefinitions(Document doc, Resourc ...
很多时候,真心欣赏 Spring 的封装、分层的方案实现。Spring 对资源文件的统一定义以及获取都是很好封装体现。   1. 资源装载的概述   在前面的分享中,使用
通过上次Factory中分享,我们使用 FileSystemXmlApplicationContext 举例,其中赋予Application具体加载资源的功能,是因为大部分 ApplicationContext 都继承了 AbstractApplicationContext,而
Spring 使用已经有些年头了,但始终没有静下心来整理 Spring,关于 Spring 各种实现方式也都是大而概之的了解,也没有深入的研究。今天终于鼓起勇气来整理他了。   万事开头难,从哪里开始呢,那就从常用的 Factory 开始吧。 在日常的使用中,比较少的直接使用 BeanFactory,常用是 ApplicationContext 接口。下面我们就以FileSystemXmlApplicationContext 为例,开始梳理 Spring 中的依赖注入的知识。  
1. 一点儿废话 这篇博文拖泥带水的搞了很久,一直没有发出来。我还是要坚持自己是mina学习之路的。 今天我们来解决一下如何来搞定一个server端,多个client的socket通信方式。 2.服务端的支持 2.1 ServerSocket.accept() Java doc: Listens for a connection to be made to this socket and accepts it. The method blocks until a connection is made. 监听一个Socket连接并接受他。这个方法会一直阻塞直到有一个Socket连接创建。(也就 ...
分享一个图片,讲述进程状态转换的:
今天看见一个关于进程和程序区别的故事比较不错: 一位厨艺很好的计算机科学家正在为他的女儿烘制生日蛋糕。他做的生日蛋糕有食谱,厨房中有所需要的原料:面粉、糖、奶油等。在这个比喻中,做蛋糕的食谱就是程序了(即用适当的形式描述的算法),计算机科学家就是处理机(CPU),而做蛋糕的原料就是输入数据了。进程就是厨师阅读食谱、取得各种原料、烘制蛋糕的一系列动作的总和。 现在假设计算机科学家的儿子哭着跑了进来,说他被一只蜜蜂蛰了。计算机就记录他的蛋糕照着食谱做到什么地方了(保存进程的当前状态),然后拿出一本急救手册,按照急救手册中的指示处理蛰伤。这里我们看见了处理机(科学家)从低优先级的进程(做蛋糕)切换 ...
今天想从酷狗中导出播放列表的歌曲到U盘,发现酷狗只支持导出列表,无奈自己写一个程序来导出,顺便温习一下digester的使用,哈哈。 apache的digester已经升到3.2的版本,3以后的版本比较爽,可以直接使用annotation来定义rule。 1. ...
做Java编程这么多年了,今天学习mina框架的时候,确发现自己连socket编程都不太了解,真是愧对这几年的Java学习经验了。所以在学习mina2前,我首选尝试者了解一下socket。 1. 先摸索个例子程序 实现功能概述:客户端向服务端发送一个命令,服务端接受,并发消息给客户端证明已经收到。如果输入“end”(不区分大小写)测试结束。 1.1 socket服务端 public class CmdServer { public static final Log LOG = LogFactory.getLog(CmdServer.class); public static ...
public class 新手 { private static final Log LOG = LogFactory.getLog(新手.class); private String name; public 新手(String name) { this.name = name; } public void 报到() { LOG.info("新手报到:我是".concat(name).concat(",新手来了,请多关照!")) } ...
Global site tag (gtag.js) - Google Analytics