`
mujun1209
  • 浏览: 20682 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
[size=large]本文将解析spring bean定义标签和自定义标签的解析实现原理。 这里说的标签仅限于以xml作为bean定义描述符的spring容器,继承AbstractXmlApplicationContext的一些子 容器,如XmlApplicationContext、ClassPathXmlApplicationContext、 FileSystemXmlApplicationContext等。同时也仅限于描述schema作为标签定义的情况。 Spring  xml ioc 容器常用标签和自定义标签 以 Xml 资源定义的容器配置是我们最常见的一种方式。 Spring ...
[size=large]ClassPathXmlApplicationContext 类体系结构 以下是 ClassPathXmlApplicationContext 的类继承体系结构,理解这个结构有助于后面的代码理解。 左边黄色部分是 ApplicationContext 体系继承结构,右边是 BeanFactory 的结构体系,两个结构 ...
[size=large]关于IOC容器 IoC容器:最主要是完成了完成对象的创建和依赖的管理注入等等。 先从我们自己设计这样一个视角来考虑: 所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实 ...
1,bas 包 作为整个架构的基础数据结构包:提供了架构中基础数据的接口,和默认的实现。 IExtend :      扩展属性接口类 在Coprize架构中,所有对象的实例都应该具备可扩展属性的能力 可在程序执行过程中动态设定对象的属性及属性值。该接口提供了 新增属性(setAttribute) 获取属性(getAttribute) 检查是否存在属性(Contan) IField :          数据字段对象接口 继承IExtend 表示字段具有可扩展属性的能力。该接口主要描叙一个字段的特性:字段名称,字段标题,类型,值。      IDataObject :           数 ...

2012 新起航!

好久不写字了,快忘记那种敲打键盘写写心情的日子了。 好久前,感觉2012 好遥远的世界末日,没想到都已经过了四分之一了。浑浑噩噩,总感觉工作很忙,却始终没忙出点什么,感觉时间越来越近了,目标越来月明确了,但自 ...
与C或C++编写的程序不同,Java程序并不是一个可执行文件,而是由许多独立的类文件组成,每一个文件对应于一个Java类。 此外,这些类文件并非立即全部都装入内存,而是根据程序需要装入内存。ClassLoader是JVM中将类装入内存的那部分。 而且,Java ClassLoader就是用Java语言编写的。这意味着创建您自己的ClassLoader非常容易,不必了解JVM的微小细节。 为什么编写ClassLoader? 如果JVM已经有一个ClassLoader,那么为什么还要编写另一个呢?问得好。缺省的ClassLoader只知道如何从本地文件系统装入类文件。不过这只适合于常规情况, ...
1. ActionContext ActionContext是被存放在当前线程中的,获取ActionContext也是从ThreadLocal中获取的。所以在执行拦截器、 action和result的过程中,由于他们都是在一个线程中按照顺序执行的,所以可以可以在任意时候在ThreadLocal中获取 ActionContext。 ActionContext包括了很多信息,比如Session、Application、Request、Locale、ValueStack等,其中 ValueStack可以解析ognl表达式,来动态获取一些值,同时可以给表达式提供对象。   ActionCo ...
首先强调一下struts2的线程程安全,在Struts2中大量采用ThreadLocal线程局部变量的方法来保证线程的安全,像Dispatcher等都是通过ThreadLocal来保存变量值,使得每个线程都有自己独立的实例变量,互不相干.   接下来就从Dispatcher开始看起,先看其构造函数: Java代码 //创建Dispatcher,此类是一个Delegate,它是真正完成根据url解析转向,读取对应Action的地方        public Dispatcher(ServletContext servletContext, Map<Stri ...
接下来第三步:init_LegacyStrutsProperties()调用的是调用的是LegacyPropertiesConfigurationProvider通过比较前面DefaultPropertiesProvider与调用的是LegacyPropertiesConfigurationProvider.发现DefaultPropertiesProvider继承自后者,但重写了register()方法,主要是生成PropertiesSetting的不同,前者是根据org/apache/struts2/default.properties后者是根据struts.properties我们展开 ...
Dispatcher已经在之前讲过,这就好办了。FilterDispatcher是Struts2的核心控制器,首先看一下init()方法。 Java代码 public void init(FilterConfig filterConfig) throws ServletException {        try {            this.filterConfig = filterConfig;            initLogging();         //创建dispatcher,前面都已经讲过啰            dis ...
下面开始讲一下主菜ActionProxy了.在这之前最好先去了解一下动态Proxy的基本知识. ActionProxy是Action的一个代理类,也就是说Action的调用是通过ActionProxy实现的,其实就是调用了ActionProxy.execute()方法,而该方法又调用了ActionInvocation.invoke()方法。归根到底,最后调用的是DefaultActionInvocation.invokeAction()方法。 DefaultActionInvocation()->init()->createAction()。 最后通过调用ActionProxy.e ...
  java 容器,也是面试当中问的频率比较高的问题。下面贴一张 thinking in java中的集合类库的完备图。   图中不包括queue的实现。虚线框表示abstract类,这些类可能看起来有些困惑,但是他们只是实现了特定接口的工具。如果你在创建自己的set,那么并不用从Set接口开始并实现其中的全部方法,只需要从AbstractSet继承,然后创建新类必须的的工作。事实上容器类库已经包含了足够多的功能,任何时候都可以满足我们的需求,因此,我们通常可以忽略那些Abstract的类。    下面介绍下,容器类当中这些接口,类各自的特性。     Collection:一个独立的元素的 ...
1,OCP(Open-Close Principle)开闭原则        Software entities should be open for extension,but closed for modification,(在设计一个模块的时候,应当使这个模块可以在不被修改的前提下扩展)。       对扩展开放open,对修改关闭close。       如 ...
  记得一次面试当面试官问起我有关struts2是如何把参数直接封装到action 的属性当中的。在那一秒我竟然想不起struts到底是如果做到的,只知道它做到了。很多时候我们在写代码,只是在为了功能而去写,去用到一些工具,然后 ...
来源 ibm developerWorks 简介: OGNL 是 Object-Graph Navigation Language 的缩写, 从语言角度来说:它是一个功能强大的表达式语言,用来获取和设置 Java™对象的属性。 OGNL 在许多的地方都有应用。本文将对 OGNL 进行介绍以及如何使用 OGNL ...
Global site tag (gtag.js) - Google Analytics