易截截图软件、单文件、免安装、纯绿色、仅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平台访问开源云存储?

 
尽管云计算这一术语并不新鲜(Amazon在2006年就开始提供它的云服务),但从2008年起它才开始真正成为流行词,这期间,Google和
Amazon的云服务逐渐获得了公众的关注。 Google的App Engine使用户能够在Google基础设施上构建和托管 Web 应用程序。
  连同S3,AmazonWeb Services还包括Elastic Cloud Compute
(EC2) ......

quartz一分钟教程 java任务调度

 quartz是干啥的? 任务调度用的
任务调度是干啥的?就是在预定的时间做预定的事
1.在quart网站下最新的JAR包
2.建个项目,把quartz的JAR包加入到项目
3.新建一个任务
public class MyJob implements org.quartz.Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionExceptio ......

Java 7的主要变化

Devoxx 大会结束在几天前结束了,一位与会者对此次大会的重要内容进行了总结,他提到Java 7的主要变化如下:
1.对collections的支持
Java代码
List<String> list = new ArrayList<String>();   
list.add(“item”);   
String item =&nbs ......

从java jar文件包中读资源的常用方法

 
在你的代码里调用了一些资源文件,如图片,音乐等,在调试环境或单独运行的时候可以正常显示或播放,而一旦打包到jar文件中,这些东东就再也出不来了,除非把这个jar放到原来未打包以前的目录下,但通常jar是单独发布的。
[关键字] java jar文件包 资源
  可能有不少初学者会有这样的困惑:在你的代码里调用了 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号