spring架构设计
spring中使用到的设计模式
代理模式:
1.执行者,被代理人
2.对于被代理人来说,事情必须要做,但没时间做,需要人来代替
3.需要获取到被代理的人的信息
由于对反射的了解太浅,所以能理解动态代理的原理,却没法手写动态代理的实现,还有很长的路要走
参考百度:java动态代理
参考:http://blog.csdn.net/rokii/article/details/4046098
fgf
通过Porxy.newProxyInstance()
方法的三个参数:
1. 类加载器(Class Loader)
2. 需要实现的接口数组
3. InvocationHandler接口。所有动态代理类的方法调用,都会交由InvocationHandler接口实现类里的invoke()方法去处理。这是动态代理的关键所在。
去获取:动态代理对象
一个代理类:实现 InvocationHandler接口,以代理 实现某一接口的所有子类
需要实现invoke方法
invoke()方法同样有三个参数:
1. 动态代理类的引用,通常情况下不需要它。但可以使用getClass()方法,得到proxy的Class类从而取得实例的类信息,如方法列表,annotation等。
2. 方法对象的引用,代表被动态代理类调用的方法。从中可得到方法名,参数类型,返回类型等等
3. args对象数组,代表被调用方法的参数。注意基本类型(int,long)会被装箱成对象类型(Interger, Long)