自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 Spring源码深度解析(八)解析及注册BeanDefinitions

从下面开始说: 这段代码还比较清晰,在Spirng的配置里面有两大类Bean声明,一个是默认的,如: 另一类就是自定义的,如: 两种方式解析差别还挺大的,如果采用Spring默认配置,Spring自然知道怎么做,而如果使用自定义的方式需要增加一些接口和配置了。

2016-06-30 19:46:58 2596

原创 Spring源码深度解析(七)获取Document

经过了验证模式准备的步骤就可以进行Document加载了,XmlBeanFactoryReader类对于文档读取并没有亲历亲为,而是委托给了DocumentLaoder去执行,DocumentLoader是个接口,真正调用的是DefaultDocumentLoader,解析代码如下: d dzaidf  在这里提及下EntityResolver,对于参数entityResolver,传入

2016-06-30 16:57:21 2991 2

原创 Spring源码深度解析(六)获取XML的验证模式

了解XML文件的都知道,XML文件的验证模式保证了XML文件的正确性,而比较常用的验证模式有两种:DTD和XSD.它们之间区别是: DTD与XSD验证模式的区别 地方DTD(Document Type Definition)即文档类型定义,是一种XML约束模式语言,是XML文件的验证机制,属于XML文件组成的一部分。DTD是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文

2016-06-30 14:35:01 3849

原创 Spring源码深度解析(五)加载Bean

之前提到的在XmlBeanFactory构造函数中调用了XmlBeanDefinitionReader类型的reader属性提供的方法this.reader.loadBeanDefinitions(resource),而这句代码则是整个资源加载的切入点,我们先来看看这个方法的时序图,如图2-9所示: 看到图2-9我们才知道,原来饶了这么久还没有切入正题,还一直在为加载XML文件和解析注册Be

2016-06-30 11:03:10 5990 3

原创 Spring源码深度解析(四)容器的基础XmlBeanFactory

现在我们已经对Srping的容器有了一个大概的了解,尽管很多地方还很迷糊,但是不要紧,下面我们开始探讨每个步骤的详细实现。接下来我们要深入分析以下代码的实现: BeanFactory bf = new XmlBeanFactory(new ClassPathResource("beanFactoryTest.xml")); 通过XmlBeanFactory初始化时序图,图2—7,我们看下上面代

2016-06-29 20:53:45 7249 3

原创 Spring源码深度解析(三)Spring的结构组成

(1)beans包的层级结构 阅读源码最好的方式是通过示例跟着操作走一遍,大多数时候可能会被复杂源码绕来绕去,绕到自己不知道身在何处,如果配合UML还是可以搞定的。 我们先来spring-beans包的源码结构 beans包中各个源码的功能如下。 src/main/java用于展现Spring的主要逻辑src/mian/resources用于存放系统的配置文件src/test/ja

2016-06-21 20:40:24 8715 2

原创 Srping源码深度解析(二)容器的基本用法

bean是spring中最核心的东西,我们看看bean的定义。 public class MyTestBean{        private String testStr="testStr";        public String getTestStr(){               return testStr;         }         public void

2016-06-14 20:56:04 7981

原创 Spring源码深度解析(一)Spring的整体架构

spring框架是一个分层架构,它包含一系列的功能要素,被分为大约20个模块,如下图所示:                                        spring整体架构图 这些模块被总结为以下几个部分: (1)Core Container Core Container(核心容器)包含有Core,Beans,Context,Expression Lang

2016-06-14 11:23:44 42377 5

原创 wrieteObject与readObject

在序列化一个对象的时候,我们需要用到writeObject方法。同时在序列化的对象里面也需要写入这两个方法,这样当我们调用主线程的readObject与writeObject方法的时候,它就会被显示的调用:下 下面是main方法中对它的调用: 当ObjectOutputStream调用writeObject(SessionDTO)方法的时候它不仅 会将这个对象写进文件,还会调用这个对象

2016-06-07 14:24:21 811

原创 线程池的简单使用

许多时候为了提高效率,我们不得不去做一个线程池,下面是一个线程池最简单的使用例子,我们在其中使用了固定线程数的线程池。 在这个线程池中我们用了最为简单的例子,通过这个例子可以看到同时执行的线程数量。而且方便理解对于线程池的使用。

2016-06-06 20:08:03 688

原创 并发注意事项(2)并发工具优先于wait和notify

自jdk1.5以后java提供了更为高级的并发工具,他们可以完成wait和notify所能完成的工作。 在java.util.conturrent包中更高级的并发工具分成三类:Executor Framework,并发集合(Concurrent Collection)以及同步器(Synchronizer). Executor Framework是线程池的调度,即调用线程池的静态方法: Exe

2016-06-02 11:14:31 2824

原创 同步注意事项(1)避免过度同步

在一个同步区域内部,不要调用设计成要被覆盖的方法,这类方法被称为外来方法,调用这种方法会放生许多不必要的异常,而且有时候很难检查, 举例说明,下面的类是用观察者模式做的,允许客户端在将元素添加到集合中时预定通知,该类是在ForwardingSet上实现的,下面是代码: 类ObservableSet: 类SetObserver: ObservableSet类中会调用addOb

2016-06-01 16:07:06 1063

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除