动态代理分为:Dynamic proxy(针对实现了接口的类)和cglib(针对实现了无接口的类)。CGLib与Dynamic Proxy的代理机制基本类似,Dynamic Proxy返回的动态代理类,是目标类所实现的接口的另一个实现版本,它实现了对目标类的代理,而CGLib返回的动态代理类,则是目标代理类的一个子类。
下面实例对二者进行简单的实现。由于简单明了,同时代码中有详细的注释,故不一一详解。注意自己导入cglib包
接口代码:China .java
- package Test;
- /*
- * 接口
- */
- public interface China {
- public void sayOlympic();
- }
实现类:Chinese .java
- package Test;
- /*
- * 实现类
- */
- public class Chinese implements China {
- @Override
- public void sayOlympic() {
- System.out.println("北京欢迎你");
- }
- }
辅助工厂类:ChineseFactory .java(可要可不要,具体看实现)
- package Test;
- /*
- * 辅助工厂类
- */
- public class ChineseFactory {
- /*
- * 根据类名创建类的实例
- */
- public Object getInstance(String clz){
- Class obj=null;
- try {
- obj=Class.forName(clz);
- return (Object)obj.newInstance();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }catch (InstantiationException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();