自动生成getter setter
如何使用java黑魔法给一个entity生成getter,setter方法? 由于java是一门静态语言,要给一个类动态添加方法,看似是不可能的。但牛B的程序员会让任何事情发生。我只知道有两种方式可以做到,一种是字节码加强,借助asm包;另一种是运行期加强,借助javassist包。下面,尝试用第二种方法,完成一个简单的demo。 大致思路如下 :先在Filter类里 扫描工程得到所有实体类,通过 创建自定义类加载器加载实体类 ,在加载的过程中通过javassist给每个实体类添加getter setter。 为什么要自定义类加载器呢? 我们知道,所有的类都是通过类加载器 加载到内存中,类加载器的加载通过它父加载器完成。java类加载器包括: 1、启动加载器 (Bootstrap ClassLoader) ,祖宗辈的,由c++语言实现,是jvm一部分, 负责加载JAVA_HOME\lib目录中并且能被虚拟机识别的类库 。 2、 扩展类加载器(Extension ClassLoader),爷爷辈的, 负责加载JAVA_HOME\lib\ext目录中的类库 。 3、 应用程序类加载器(Application ClassLoader),dady辈的, 负责加载用户类路径(Classpath)上所指定的类库, 如果应用程序中没有自定义过自己的类加载器,一般情况下这个就是程序中默认的类加载器