配置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>

posted @ 2017-10-18 16:52  大河虾  阅读(388)  评论(0)    收藏  举报