Spring的aop主要使用到了代理技术,对bean对象做代理,主要目的方便为bean对象增加一个额外的控制功能,如增加事务控制等,Spring的Bean管理主要用到了两种代理技术,一种是jdk提供的代理,另一种是引入cglib等jar进行代理管理,这2类代理主要的区别如下:
jdk代理要求bean的class必须实现了接口,这样没有实现接口的类无法进行代理,没有实现接口的bean类,只能使用cglib来实现代理功能了,cglib的代理方式为:直接继承要代理的类,这样的话,如果一个final类(final类不允许继承),将无法进行代理.