自行打造实现控制反转容器(IOC)与面向方面编程(AOP)的轻量级Framework

Posted niulity

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自行打造实现控制反转容器(IOC)与面向方面编程(AOP)的轻量级Framework相关的知识,希望对你有一定的参考价值。

 

自行打造实现控制反转容器(IOC)与面向方面编程(AOP)的轻量级Framework

——MyFramework

 

原创: 牛超 TOKYO

Email/MSNncfire_msn@hotmail.com

QQ10867910

http://fanblogs.jp/dbaeo7zl/

 

 

 

关键字(Keywords):面向对象(OOP)、框架(Framework)、反射(Reflection)、设计模式(Design Pattern)、扩展标识语言(XML)、依赖注入(Dependency Injection)、控制反转容器(IoC)、横切点(Pointcut)、面向方面编程(AOP

 

 

 

前言

关于IoCAOP的理论,现在到处都能找到相关的资料,一句话,勿在浮砂筑高台。。。尽管高台上看海滩极有情趣。本次设计的目标是模仿Spring的机能以及其对象XML定义格式来自行打造轻量级的Framework,不是拿来主义而算得上是Spring的模仿秀。本框架设计的初衷只是为了避免目前闲暇的工作所毒害,防止被睡意飘浮的空气所传染。由几行读取XML的代码勾起了本人对以往研究Spring超迷人设计理论的神经与模仿设计的欲望。曾希望走在架构前沿,但自从领了日元就再没有研究过模式耦合之如的概念,整天被无章堆砌的代码恶心着。倒是这段时间没有了挠人的需求变更与计划进度,便冲动这么一时,算是兴趣驱动之使然。

话规正席,MyFramework。。。暂且这么叫吧。利用XMLJAVA反射机制完成依赖注入、对象动态构造、通用对象深度克隆机能以实现IoCAOP两大核心功能。既然有两大核心功能,代码篇幅和注释应该。。。,但因本人使用的是日语环境,日文键盘也用得不顺,Framework与测试代码只有使用蹩脚的E文注释来填充,望各位海涵并多加指正。

 

 

MyFramework之前瞻

IoC是整个框架设计的基础。第一次看到这个名词犯晕其实几篇文章看下来觉得挺简单。写这篇文章也是为了抛砖引玉。毕竟不足充斥着行进之路。首先,设计XML文档并形成自己的标签格式,以便脑中形成相对客观的目的性,即让Framework能够无二义性地读取其中定义的对象,针对定义片断解说如下。

一、对于单一的对象定义,Object标签namean Employee对象,Singleton定义为单件(不是对象本身的属性,EmployeeBean没有是否为单身这么个属性;具体指系统中仅存一份无副本,见设计模式):

<object name = "anemployee" class = "app.beans.EmployeeBean" singleton = "false">

<EmpId>5</EmpId>

<EmpCode>0005</EmpCode>

<EmpName>ttt</EmpName>

<Birthday>2007-11-04</Birthday>

<Resume>no resume</Resume>

</object>

二、聚合对象Object结点元素子标签以elemen t表示,其属性defpackage表示如果当前对象或是聚合元素的类定义没有指定Package,则将其指定为defpackage所定义的内容,属性iscollection表明该对象为聚合对象。

<object name = "employeelist" class = "java.util.ArrayList" defpackage = "app.beans" iscollection = "true">

<element class = "EmployeeBean">

<EmpId>1</EmpId>

<EmpCode>0001</EmpCode>

<EmpName>aaa</EmpName>

<Birthday>2007-12-04</Birthday>

<Resume>0</Resume>

</element>

 

<element class = "EmployeeBean">

<EmpId>2</EmpId>

<EmpCode>0002</EmpCode>

<EmpName>bbb</EmpName>

<Birthday>2007-12-04</Birthday>

<Resume>0</Resume>

</element>

 

<element class = "app.beans.EmployeeBean">

<EmpId>3</EmpId>

<EmpCode>0003</EmpCode>

<EmpName>ccc</EmpName>

<Birthday>2007-12-04</Birthday>

<Resume>0</Resume>

</element>

<element class = "app.beans.EmployeeBean">

<EmpId>4</EmpId>

<EmpCode>0004</EmpCode>

<EmpName>ccc</EmpName>

<Birthday>2007-12-04</Birthday>

<Resume>0</Resume>

</element>

</object>

三、依赖注入,参照对象自行打造实现控制反转容器(IOC)与面向方面编程(AOP)的轻量级Framework

自行打造实现控制反转容器(IOC)与面向方面编程(AOP)的轻量级Framework

12.控制反转IOC与面向切面编程AOP

浅谈“面向接口编程” :依赖反转 IOC 与 DI (容器控制反转与依赖注入)

控制反转(ioc)和 面向切面(AOP)

说明反转控制(IOC)和面向方向编程(AOP)在spring中的应用