Aop 几种应用实例

实例一  ProxyFactoryBean

 

 <bean id="usermanager" class="com.book.service.UserManager" />

  <bean id="beforeadvice" class="com.common.bean.Before"></bean>   
  <bean id="beforeadvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
     <property name="advice">
      <ref local="beforeadvice"/>
     </property>
     <property name="pattern">
      <value>com/.book/.service/.UserManager/.findUser</value>
     </property>
   </bean>

//另一个事务拦截 

<bean id="transactionInterceptor"
  class="org.springframework.transaction.interceptor.TransactionInterceptor">
  <!-- 事务拦截器bean需要依赖注入一个事务管理器 -->
  <property name="transactionManager" ref="transactionManager"/>
  <property name="transactionAttributes">
   <!-- 下面定义事务传播属性 -->
   <props>
    <prop key="insert*">PROPAGATION_REQUIRED</prop>
    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="*">PROPAGATION_REQUIRED</prop>
   </props>
  </property>
 </bean>

 

调用1

<bean id="logic2Proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
       <property name="proxyTargetClass"><value>true</value></property>
       <property name="target"><ref bean="usermanager"/></property>
       <property name="interceptorNames">
          <list>
             <value>beforeadvisor</value>
          </list>
       </property>
     </bean>

 调用二

 

<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
 <!-- 指定对满足哪些Bean name的Bean自动生成业务代理 -->
     <property name="beanNames">
            <!-- 下面是所有需要自动创建事务代理的Bean-->
            <list>
                   <value>userManager</value> 
            </list>
            <!-- 此处可增加其他需要自动创建事务代理的Bean-->
     </property>
        <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
        <property name="interceptorNames">
            <list>
                <value>transactionInterceptor</value>
                <value>beforeadvisor</value>
                  <!--  此处可增加其他新的Interceptor -->
            </list>
        </property>
    </bean>

 

注:调用一 和 调用二不可同时存在

实例二 aspectj

package com.common.bean;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class UserInterceptor {
 @Before ("execution(* com.book.service.UserManager.*(..))")
 public void userinter(){
  System.out.println("拦截器运作开始!");
 }
}

调用三

<aop:aspectj-autoproxy />
 <bean id="userInterceptor" class="com.common.bean.UserInterceptor"/>

 

注意:对于同一个类例如UserManager 调用一,调用二,调用三 不可同时应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

manjianghong86

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值