spring AOP配置

spring AOP进行自动拦截,常用的比如事务处理。代码如下

 

<bean id="BeanProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
        <property name="beanNames">  
            <!-- 对类名以Dao结尾的类进行代理 -->  
            <value>*Dao</value>  
        </property>  
        <!-- 对代理类进行加载拦截器(实现通知的过程) -->  
        <property name="interceptorNames">  
            <list>  
                <value>transactionInterceptor</value>  
            </list>  
        </property>  
    </bean>

 再比如eHcache缓存AOP拦截:

 

 

<!-- Bean自动代理处理器配置 -->
	<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames">
			<list>
				<!-- 配置需要进行日志记录的Service和Dao <value>*Dao</value> -->
				<!-- 配置所有Service结尾命名的Bean,即所有Service层的类都要 经过exceptionHandler异常处理类 -->
				<value>*Dao</value> <!-- Service层的Bean ID 命名要以Service 结尾 -->
			</list>
		</property>
		<property name="interceptorNames">
			<list>
				<value>methodCachePointCut</value>  
                <value>methodCacheDestory</value>  
			</list>
		</property>
	</bean>

 这两个例子其实是一样的,第一个属性beanNames是对需要的地方进行配置,第二个属性interceptorNames是拦截器的名称,比如说transactionInterceptor的配置如下:

<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">  
        <property name="transactionManager" ref="transactionManager"></property>  
        <property name="transactionAttributes">  
            <props>  
                <!-- PROPAGATION_SUPPORTS: 如果已经存在事务,则加入事务;如果没有事务,则以非事务的方式执行;   
                PROPAGATION_MANDATORY: 使用当前事务, 如果没有, 则抛出异常;   
                PROPAGATION_REQUIRED: 新建事务,如果当前有事务, 则挂起; P  
                ROPAGATION_NOT_SUPPORTED:以非事务的方式执行, 如果当前有事务, 则挂起;   
                PROPAGATION_NEVER:以非事务的方式执行, 如果当前有事务,则抛出异常;   
                +/-Exception</prop> + 表示异常出现时事物提交 - 表示异常出现时事务回滚 -->  
                <prop key="find*">PROPAGATION_SUPPORTS,readOnly</prop>  
                <prop key="del*"> PROPAGATION_SUPPORTS</prop>  
                <prop key="update*">PROPAGATION_REQUIRED</prop>  
                <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>  
            </props>  
        </property>  
    </bean> 

     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
     </bean>

 很好理解的。

 

posted @ 2014-09-10 14:54  yuer629  阅读(125)  评论(0编辑  收藏  举报