日期:2014-05-17  浏览次数:20709 次

求助,spring的机制不明白!!!
使用spring实现面向方面编程的时候,直接在类中new对象是不能执行通知方法的,必须将类转化成bean的形式写在spring配置文件中,使用的时候向spring框架申请对象,并根据配置文件调用该对象的方法。但是这有一个问题,写在bean中的方法必须是get、set格式的方法,对参数类型和返回值类型有严格的要求,如果我想执行一些不满足这些要求的方法又想进行必要的通知该怎么做呢?

------解决方案--------------------
你有没有用过java.lang.reflect.Proxy这个类,
Object obj = Proxy.newProxyInstance(getClass().getClassLoader(), new Class[]{CustormService.class}, new MyInvocationHandler());

这个obj可以转换成CustormService service = (CustormService)obj;

并用调用service中的任何方法时,实际上都只是调用了MyInvocationHandler中的invoke方法,



Spring可以用这个方法生成Proxy,然后实现好MyInvocationHandler就行,在MyInvocationHandler的invoke中会作一些必要的处理后最后再调用CustormServiceImpl中的同名方法就行