spring 3.1 mvc 例子浅谈[aop事务](2)

来源:互联网 发布:pr视频剪辑软件下载 编辑:程序博客网 时间:2024/03/29 04:16

spring mvc 使用aop:

spring mvc Controller层常规方式不能使用aop,可以使用拦截器进行拦截:


service层使用aop 事务

需要使用到的包:

aopalliance-1.0.jar

org.springframework.aop-3.1.0.RELEASE.jar

其他为常规spring包和common包

1,dataSource使用的c3p0:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass">
<value>${database.driverClass}</value>   
</property>
<property name="jdbcUrl">
<value>${database.jdbcUrl}</value>
</property>
<property name="user">
<value>${database.user}</value>
</property>
<property name="password">
<value>${database.password}</value>
</property>
<property name="initialPoolSize">
<value>${c3p0.initialPoolSize}</value>
</property>
<property name="minPoolSize">
<value>${c3p0.minPoolSize}</value>
</property>
<property name="maxPoolSize">
<value>${c3p0.maxPoolSize}</value>
</property>
<property name="idleConnectionTestPeriod">
<value>${c3p0.idleConnectionTestPeriod}</value>
</property>
</bean>  

2,配置aop:

<!-- 事务处理-->
<bean id="jdbc_TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>

<tx:advice id="txAdvice" transaction-manager="jdbc_TransactionManager">
<tx:attributes>

<!-- 配置事务隔离级别-->
<tx:method name="insert*" propagation="REQUIRED" isolation="READ_COMMITTED" />
<tx:method name="update*" propagation="REQUIRED" isolation="READ_COMMITTED"/>
<tx:method name="del*" propagation="REQUIRED" isolation="READ_COMMITTED"/>

<!--除匹配以上的请求如果无事务则不进行事务处理-->
<tx:method name="*" propagation="SUPPORTS" read-only="false" isolation="READ_COMMITTED"/>
</tx:attributes>
</tx:advice>

        <!-- 配置切面-->
<aop:config>
<aop:pointcut id="txMethod" expression="execution(* com.show.oper.service.admin.impl.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txMethod" />
</aop:config>


3,如此 完成以上步骤并不能使事务生效:

需要在dispatcher-servlet.xml中加入

<aop:aspectj-autoproxy/>   

这样spring mvc的事务将可以生效




原创粉丝点击