<!--01. 配置目标对象 实际肯定是配置userserviceimpl--> <bean id="userdaoimpl" class="com.xdf.dao.userdaoimpl"/> <!--02.配置前置通知--> <bean id="beforeadvice" class="com.xdf.advice.beforeadvice"/> <!--03.配置工厂--> <bean id="userproxy" class="org.springframework.aop.framework.proxyfactorybean"> <!--配置目标对象--> <property name="targetname" value="userdaoimpl"/> <!--配置顾问--> <property name="interceptornames" value="myadvisor"/> </bean> <!--04.配置顾问myadvisor--> <bean id="myadvisor" class="org.springframework.aop.support.namematchmethodpointcutadvisor"> <!--配置通知 通知只是顾问的一个属性 --> <property name="advice" ref="beforeadvice"/> <!--配置切入点--> <!-- <property name="mappedname" value="eat"/>--> <property name="mappednames" value="eat,sleep"/> </bean>
** * 使用顾问 advisor.xml */ @test //前置通知 public void testadvisor(){ applicationcontext context=new classpathxmlapplicationcontext("advisor.xml"); userdao userdao= context.getbean("userproxy",userdao.class); userdao.eat(); userdao.sleep(); }
·可以解决 给指定的主业务方法 增强的问题!
在dao层增加 ea()和e()!便于我们测试
<!--01. 配置目标对象 实际肯定是配置userserviceimpl--> <bean id="userdaoimpl" class="com.xdf.dao.userdaoimpl"/> <!--02.配置前置通知--> <bean id="beforeadvice" class="com.xdf.advice.beforeadvice"/> <!--03.配置工厂--> <bean id="userproxy" class="org.springframework.aop.framework.proxyfactorybean"> <!--配置目标对象--> <property name="targetname" value="userdaoimpl"/> <!--配置顾问--> <property name="interceptornames" value="myadvisor"/> </bean> <!--04.配置顾问myadvisor regexpmethodpointcutadvisor --> <bean id="myadvisor" class="org.springframework.aop.support.regexpmethodpointcutadvisor"> <!--配置通知 通知只是顾问的一个属性 --> <property name="advice" ref="beforeadvice"/> <!--配置切入点 使用正则表达式 com.xdf.dao.userdaoimpl.eat 务必使用类名+方法名 . 代表任意单个字符 * 代表.字符出现的次数是0-n ?:0 -1 +: 1-n --> <property name="patterns"> <array> <!-- <value>.*e.*</value> 匹配 eat 和sleep--> <!-- <value>com.xdf.dao.userdaoimpl.ea.?</value>匹配 eat 和ea--> <value>com.xdf.dao.userdaoimpl.*e.*</value> <!--匹配 eat 和ea e--> </array> </property>
</bean>
<!--还是一个问题没解决 一个工厂只能操作一个对象-->
/** * 使用顾问 regex.xml */ @test //前置通知 public void testregex(){ applicationcontext context=new classpathxmlapplicationcontext("regex.xml"); userdao userdao= context.getbean("userproxy",userdao.class); userdao.eat(); userdao.ea(); userdao.e(); userdao.sleep(); }
各位亲,这个办法你想到了吗?!接下来的我还会继续更新的哦!
如对本文有疑问, 点击进行留言回复!!
ScrollView和RecyclerView的滑动事件处理
配置JAVA环境+安装Android Studio全过程+踩坑记录
Android P Camera2当SD卡被拔出来自动切换到内部存储
android 多个edittext 判空监听 让Button动态是否可点击
Android开源项目滚轮选择器WheelPicker的基本用法总结
网友评论