配置AOP/cglib代理 日志 xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
">
<!-- 日志配置 -->
<bean id="textlog" class="com.pangxie.log.TextLog"></bean>
<bean id="mylog" class="com.pangxie.log.MyLog"></bean>
<aop:config>
<aop:aspect ref="mylog">
<aop:pointcut expression="execution(* com.pangxie.log.TextLog.*(..))" id="pointcut"/>
<aop:before method="before" pointcut-ref="pointcut"/>
<aop:after method="after" pointcut-ref="pointcut"/>
<aop:after-returning method="afterReturning" pointcut-ref="pointcut"/>
<aop:after-throwing method="afterThrowing" pointcut-ref="pointcut"/>
<aop:around method="around" pointcut-ref="pointcut"/>
</aop:aspect>
</aop:config>
<!-- cglib代理 -->
<bean id="playFootBall" class="com.pangxie.cglib.PlayFootBall"></bean>
<bean id="beforehelper" class="com.pangxie.cglib.FootBallHelper"></bean>
<bean id="afterhelper" class="com.pangxie.cglib.AfterFoot"></bean>
<bean id="playProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="playFootBall"></property>
<property name="interceptorNames">
<list>
<value>beforehelper</value>
<value>afterhelper</value>
</list>
</property>
</bean>
<!-- 配置实现类的对象 -->
<bean id="liuzezhao" class="com.pangxie.aop.LiuZeZhao"></bean>
<!-- 配置通知类的对象 -->
<bean id="BeforeSleep" class="com.pangxie.aop.BeforeSleep"></bean>
<bean id="AfterSleep" class="com.pangxie.aop.AfterSleep"></bean>
<!-- 切面配置 -->
<bean id="sleepPointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut">
<property name="pattern" value=".*sleep"></property>
</bean>
<!-- 切面通知配置 -->
<bean id="sleepHelperAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<!-- 前 需要通知的对象 -->
<property name="advice" ref="BeforeSleep"></property>
<!-- 关联切面对象 -->
<property name="pointcut" ref="sleepPointcut"></property>
</bean>
<!-- 切面通知配置 -->
<bean id="sleepHelperAdvisor2" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<!-- 后 需要通知的对象 -->
<property name="advice" ref="AfterSleep"></property>
<!-- 关联切面对象 -->
<property name="pointcut" ref="sleepPointcut"></property>
</bean>
<!-- 创建代理bean对象 -->
<bean id="sleepProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="liuzezhao"></property>
<!-- 切入面名字的列表 -->
<property name="interceptorNames">
<list>
<value>sleepHelperAdvisor</value>
<value>sleepHelperAdvisor2</value>
</list>
</property>
<property name="proxyInterfaces" value="com.pangxie.aop.Sleeper"></property>
</bean>
</beans>

浙公网安备 33010602011771号