spring AOP配置

本文介绍了如何使用 Spring AOP 进行自动拦截操作,包括事务处理及 eHcache 缓存管理。通过 BeanNameAutoProxyCreator 配置,实现对指定类的代理,并加载拦截器。文中还详细展示了 transactionInterceptor 的配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>

 很好理解的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值