易截截图软件、单文件、免安装、纯绿色、仅160KB

Java下的框架编程(5)

 



   反射、Proxy和元数据是Java最强的三个特征,再加上CGLib (Code Generation Library)
和ASM,使得Java虽然没有Ruby,Python般后生可畏,一样能做出强悍的框架。
   Proxy
可以看作是微型的AOP,明白提供了在继承和委托之外的第三个代码封装途径,只要有足够的想象力,可以做得非常好玩,Spring的源码里用Proxy就
用得很随便,看得我非常眼红。可惜Proxy必须基于接口。因此Spring的做法,基于接口的用proxy,否则就用cglib。AOP么,一般小事非
compoent一级的就不麻烦AspectJ出手了。
    cglib的Enhancer说起来神奇,用起来一页纸不到就讲完了。
    它的原理就是用Enhancer生成一个原有类的子类,并且设置好callback到proxy, 则原有类的每个方法调用都会转为调用实现了MethodInterceptor接口的proxy的intercept() 函数:
public
 Object intercept(Object o,Method method,Object[] args,MethodProxy proxy)
 在
intercept()函数里,你可以在执行Object
result=proxy.invokeSuper(o,args);来执行原有函数,在执行前后加入自己的东西,改变它的参数值,也可以瞒天过海,完全
干别的。说白了,就是AOP中的around advice。
    AOP没有出现以前,该领域经典的设计模式是Decorator,像Java IO Stream的设计就是如此.不过,如果为每个DAO, 每个方法的写Decorator函数会写死人的,所以用上cglib的好处是一次过拦截所有方法。 
     另外,cglib除了Enhancer之外,还有BulkBean和Transform,都是Hibernate持久化的基础,但文档贫乏,一时还没去看怎么用。
1.AOP里讲了一百遍阿一百遍的log aspect在cglib是这样做的:
   
public
 
class
 LogDAOProxy 
implements
 MethodInterceptor
   {
       
private
 Logger log
=
Logger.getLogger(LogDAOProxy.
class
);
       
private
 Enhancer enhancer
=
new
 Enhancer();
        
//
返回DAO的子类
       
public
 Object getDAO(Class&nb


相关文档:

java入门

 Java学习从入门到精通 
一、 JDK (Java Development Kit) 
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......

JAVA读取资源文件的N种方法

 
如何读取资源文件:
(一)
Properties props = new Properties();   
props.load(new FileInputStream("db.properties"));
(二)
blog.properties文件如下
dbdriver=oracle.jdbc.driver.OracleDriver
dburl=jdbc:oracle:thin:@127.0.0.1:1521:ora92
dbuser=blog
dbpwd=blog
- ......

【转】Java 7已经完成的七大新功能预览

最近的Devoxx大会上,Java 7将包含闭包的消息令很多人感到振奋——这将做为一个独立的JSR被实现。在众多Java 7新的语言特性中,有一些现在已经完成了。Devoxx大会的一位参会者在博客中报告了下面这些Java 7已经完成的7大新功能:
1)对集合类的语言支持;
2)自动资源管理;
3)改进的通用实例创建类型推断; ......

Java下的框架编程(4)

 



1.因为两者的用途不同,所以Annotation与XML应该并存
 Anootation vs XML 到了现在,在Spring和EJB3各占一边的持续演示下,各自的用途已清晰。
   虽然两者之间完全可以相互替代,没有绝对不能做的事情,但却存在好不好的问题,两者的用途不同,应该并用:
   "size=10, ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号