1.JVM在运行时可以动态生成类的字节码,这种动态生成的类常被用作代理类,即动态代理。
2.JVM生成的动态类必须实现一个或多个接口,所以JVM生成的动态类只能用作具有相同接口的目标类的代理。但是JVM 不能自己生成接口,然后实现,即不能抽取一个类的接口。然后生成实现目标类的动态类(代理类)。
3.可以使用CGLIB库实现动态生成一个类的子类,一个类的子类也可以用作该类的代理。所以,如果要为一个没有实现接口的类生成动态代理类。可以使用CGLIB库
4.代理类德各个方法中通常除了要调用目标的响应方法和对外返回目标返回的结果外,还可以在代理方法的如下四个位置增加功能。
(1),在调用目标方法之前
(2),在调用目标方法之后
(3),在调用目标方法之前和之后
(4),在处理目标方法异常的catch块中