摘要: 1.replaced-method 子元素 方法替换: 可以在运行时用新的方法替换现有的方法,与之前的 look-up不同的是replace-method 不但可以动态地替换返回的实体bean,而且可以动态的更改原有方法的逻辑,1.1.1使用实例: 首先创建一个Bean完成某项业务1 public class Person {2 3 public void show() {4 System.out.println("I am Person ..");5 }6 } 在运营一段时间后需要改变原有的逻辑 1 import java.lang.reflect.Me... 阅读全文
posted @ 2014-04-05 15:05 mjorcen 阅读(1038) 评论(0) 推荐(0)
摘要: 1. lookup-method的应用:1.1 子元素lookup-method 似乎不是很常用,但是在某些时候他的确是非常有用的属性,通常我们称它为 "获取器注入" . 引用 "Spring In Action " 中的一句话. '获取器注入是一种特殊的方法注入,它是把一个方法声明为返回某种类型的bean,但实际上,返回的bean是配置文件里面配置的,此方法可用在设计一些可插拔的功能上,解除程序依赖'1.2 我们来看看具体的应用: 1.2.1首先我们创建一个父类,1 public class Person {2 3 public voi 阅读全文
posted @ 2014-04-05 14:32 mjorcen 阅读(1274) 评论(0) 推荐(0)
摘要: 1. meta元素的使用在解析元数据的分析之前,我们先回顾一下 meta属性的使用: 这段代码并不会体现在CarFactoryBean 的属性当中,而是一个额外的声明,当需要里面的属性时,可以通过BeanDefinition的getAttribute(key);方法获取, 对meta属性解析的代码如下:beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java 1 public void parseMetaElements(Element ele, 2 ... 阅读全文
posted @ 2014-04-05 11:53 mjorcen 阅读(2134) 评论(0) 推荐(0)
摘要: 1.1 何为 EntityResolver :官方解释: 如果SAX应用程序叙事实现自定义处理外部实体,则必须实现此接口,并使用setEntityResolver方法向SAX 驱动器注册一个实例. 也就是说,对于解析一个xml,sax 首先会读取该xml文档上的声明,根据声明去寻找相应的dtd定义,... 阅读全文
posted @ 2014-04-03 13:48 mjorcen 阅读(5021) 评论(0) 推荐(0)
摘要: 源代码分析,是一件既痛苦又快乐的事情,看别人写的代码是通过的,但当你能够看明白的时候,相信快乐也会随之而来,为了减少痛苦,更快的带来快乐, 本文以spring框架的XmlBeanFactory为入手点进行分析首先来打开该类的代码,我们将看到如下代码: 1 public class XmlBeanFactory extends DefaultListableBeanFactory { 2 3 private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this); 4 5 public... 阅读全文
posted @ 2014-03-28 18:04 mjorcen 阅读(535) 评论(0) 推荐(1)
摘要: 1.Spring 的整体架构 Spring框架主要由7大模块组成,它们提供了企业级开发需要的所有功能,而且每个模块都可以单独使用,也可以和其他模块组合使用,灵活且方便的部署可以使开发的程序更加简洁灵活。上图所示即7个模块的部署示意图。1)核心模块 Spring Core模块是Spring的核心容器,它实现了IOC模式,提供了Spring框架的基础功能。此模块中包含的BeanFactory类是Spring的核心类,负责JavaBean的配置与管理。它采用Factory模式实现了IOC即依赖注入。谈到JavaBean,它是一种 Java 类,它遵从一定的设计模式,使它们易于和其他开发工具和组... 阅读全文
posted @ 2014-03-28 11:11 mjorcen 阅读(297) 评论(0) 推荐(0)
摘要: tomcat集群时,原来通过HttpSessionListener实现类监听session的创建和销毁来统计在线人数的方法不再有效,因为不是每个人登陆都会在同一个tomcat服务器上,而在另一台tomcat上登陆的人的session是通过session复制创建的,而复制过程不会调用HttpSes... 阅读全文
posted @ 2014-03-24 12:31 mjorcen 阅读(974) 评论(0) 推荐(0)
摘要: sesion在浏览器和web服务器直接是通过一个叫做name为sessionid的cookie来传递的,所以只要在每次数据请求时保持sessionid是同一个不变就可以用到web的session了,做法是第一次数据请求时就获取sessionid的值并保存在一个静态变量中,然后在第二次请求数据的时候要... 阅读全文
posted @ 2014-03-24 11:24 mjorcen 阅读(340) 评论(0) 推荐(0)
摘要: 5.5准备创建bean 我们不可能指望在一个函数中完成一个复杂的逻辑,而且我们跟踪了这么多Spring代码,经历了这么多函数,或多或少也发现了一些规律:一个真正干活的函数其实是以do开头的,比如doGetObjectFromFactoryBean;而给我们错觉的函数,比如getObjectFromFactoryBean,其实只是从全局角度去做些统筹的工作。这个规则对于createBean也不例外,那么让我们看看在createBean函数中做了哪些准备工作。 1 protected Object createBean(final String beanName, final RootBeanD. 阅读全文
posted @ 2014-03-19 15:42 mjorcen 阅读(417) 评论(0) 推荐(0)
摘要: 5.4获取单例 之前我们讲解了从缓存中获取单例的过程,那么,如果缓存中不存在已经加载的单例bean就需要从头开始bean的加载过程了,而Spring中使用getSingleton的重载方法实现bean的加载过程。 1 public Object getSingleton(String beanName, ObjectFactory singletonFactory) { 2 Assert.notNull(beanName, "'beanName' must not be null"); 3 //全局变量需要同步 4 synchronize... 阅读全文
posted @ 2014-03-19 15:38 mjorcen 阅读(253) 评论(0) 推荐(0)