正在做一个项目,其中有个需求是实现一个aop,能够拦截dao层的所有crud操作(dao层的代码公司都是公司DAL框架自动生成的,全部继承了同一个父类,dao层的所有类继承了同一个父类),用户只需要添加相关依赖,然后不需要再写任何代码或者配置文件(比如说不能在各个类上注解或者像spring一样写xml配置文件),就可以实现拦截。这样一来,只要各个项目使用的是公司的DAL框架,并且依赖了我这个aop,那所有的增删方法查改都能被拦截并增强。
不知道这个功能是否能实现,有何好的思路?
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list><value>*Service</value><value>query*DAO</value></list>
</property>
<property name="interceptorNames">
<list>
<value>gameTransactionInterceptor</value>
</list>
</property>
</bean>
gameTransactionInterceptor就是你配的拦截器的名字
*service就是所有以这个结尾的类名
你的意思是要自己写个第三方的jar对吗,aop一个接口的所有实现类,虽然我没写过,不过我觉得完全没问题。
本来用注解也是全包扫描后看类中是否有对应的注解有就注入,所以
1.全包扫描后用反射看下类实现的接口中是否有对应接口。
2.有则加载该类文件并用反射注入载入内存中的源码以达到代理的功能(以动态代理的方式没可能,除非像sping一样管理对象)
问题:
1.不配置是不可能了,就像spring在web.xml的接入口一样,你必需在程序启动时初始化你的jar(必需配置入口)
2.现在的框架都是用spring,它也会扫描类文件,不知道内存中有的类他会不会再次加载(因为内容不一样)
以上是我所知道的希望对你有用
是可以的,你自己去试一下,通过target标签,
文章参考:http://blog.csdn.net/tianyaleixiaowu/article/details/70853147