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

在Java中利用cglib实现代理


    在上一篇文章《在Java中利用动态代理实现数据库连接与事务的自动管理》讲述了如何使用Java动态代理,但要求被代理对象要实现一个接口,如果不想实现接口怎么办呢?使用开源的cglib可以实现对一个类对象的代理,而不要求实现接口。
    cglib(Code Generation Library)能够在程序运行的时候动态生成接口的实现类和继承于某个类的子类,它是依赖于ASM的,而ASM可以灵活的操作字节码。在http://cglib.sourceforge.net/可以下载cglib.jar,本文选择的是cglib-nodep-2.2.jar,这是一个不依赖其他jar的文件。如果选择cglib-2.2.jar,还需要加入几个依赖的jar包才行,在http://cglib.sourceforge.net/dependencies.html列出来了所需要的jar文件。
    在《在Java中利用动态代理实现数据库连接与事务的自动管理》的基础上,我们继续完善框架,使一个没有实现接口的普通类也可以以注解的方式来自动开打数据库连接和事务,当然是通过cglib来实现的。
    首先建立方法的拦截器类。代码如下:
package demo.dynamicproxy;
import java.lang.reflect.Method;
import java.sql.Connection;
import demo.dynamicproxy.annotation.Transactional;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
public class CglibProxy implements MethodInterceptor {
    private Object target;
    private IDb db;
    
    public CglibProxy(Object target) {
        this.target = target;
        this.db = (IDb) target;
    }
    
    @Override
    public Object intercept(Object obj, Method method, Object[] args,
            MethodProxy methodProxy) throws Throwable {
   


相关文档:

java读取xml文件的四种方法

xml文件:
Xml代码
<?xml version="1.0" encoding="GB2312"?>  
<RESULT>  
 <VALUE>     
  <NO>A1234</NO>     
  <ADDR>河南省郑州市</ADDR>  
 </VALUE>&nbs ......

java中得到当前路径的方法


归纳一些网上取JAVA路径的方法:
注明:如果从ANT启动程序,this.getClass().getResource("")取出来的比较怪,直接用JAVA命令行调试就可成功。
得到classpath和当前类的绝对路径的一些方法
获得CLASSPATH之外路径的方法:
URL base = this.getClass().getResource(""); //先获得本类的所在位置,如/home/popeye/ ......

获取java 类的路径

public class Path {
 //get class absolute address
 public String getPath() {
  String classPath = getClass().getName();
  if (classPath.indexOf(".") != -1) {
   classPath = classPath.substring(classPath.lastIndexOf(".") + 1,
     ......

Java语言基础(一)

一,Java语言中的对象引用
C++中指针和引用兼有,而Java中没有指针的概念,完全用引用替代。如C++中一样,引用是我们给变量的一个“别名”,一个变量可以有多个“别名”。引用的值是一个内存地址,在对象的引用被定义时,如:
String s;  //此时s值为空,系统并没有为s所指的对象分配内存
s = ......

关于Java中自定义包的创建

我在学习thinking in Java4 的时候,在创建自定义包的时候,碰到了很多错误,让我郁闷了几天,通过在网上的资料搜索,把包的创建过程给大家详细列出来。
我们以thinking in Java4中的例子为例
创建两个类Vector和List。将编译后的Vector.class和List.class文件放在包net.mindview.simple下(该包位于c:\DOC\JavaT).
//Vec ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号