Spring的AOP简单介绍和常用配置(3)-事务配置
来源:互联网 发布:申请淘宝信用借贷 编辑:程序博客网 时间:2024/06/06 04:00
1.前言:
AOP传统方式的xml配置虽然配置比较繁琐,但对于理解spring背后机制还是有非常大的帮助的。
传统方式的配置也有2种方式:一、自定义代理;二、自动代理(这个是基于传统的配置方式,并非aop标签),然后我们在进行事务配置的时候,就是通过传统自动代理的方式的。暂时没有发现用aop标签配置事务的。
2.项目实例代码:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
- <!-- dbcp数据库连接池配置 -->
- <bean id="dataSourceDBCP" class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close">
- <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
- <property name="url" value="jdbc:mysql://127.0.0.1:3306/test"></property>
- <property name="username" value="root"></property>
- <property name="password" value="yuanwang"></property>
- <property name="maxIdle" value="10" />
- <property name="maxActive" value="100" />
- <property name="maxWait" value="10000" />
- <property name="validationQuery" value="select 1" />
- <property name="testOnBorrow" value="false" />
- <property name="testWhileIdle" value="true" />
- <property name="timeBetweenEvictionRunsMillis" value="1200000" />
- <property name="minEvictableIdleTimeMillis" value="1800000" />
- <property name="numTestsPerEvictionRun" value="5" />
- <property name="defaultAutoCommit" value="true" />
- </bean>
- <!-- 声明事务 -->
- <bean id="transactionManager"
- class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSourceDBCP"></property>
- </bean>
- <!-- 使用拦截器的方式来进行事务控制,个人觉得这个方法挺好,可以结合aop一起使用 -->
- <bean id="transactionInterceptor"
- class="org.springframework.transaction.interceptor.TransactionInterceptor">
- <property name="transactionManager" ref="transactionManager" />
- <property name="transactionAttributes">
- <props>
- <prop key="save*">PROPAGATION_REQUIRED</prop>
- <prop key="add*">PROPAGATION_REQUIRED</prop>
- <prop key="update*">PROPAGATION_REQUIRED</prop>
- <prop key="delete*">PROPAGATION_REQUIRED</prop>
- <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
- <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
- <prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>
- </props>
- </property>
- </bean>
- <!-- 自动代理,对beanname为DaoImpl后缀的都绑定事务拦截器 -->
- <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
- <property name="beanNames">
- <list>
- <value>*ServiceImpl</value>
- </list>
- </property>
- <property name="interceptorNames">
- <list>
- <value>transactionInterceptor</value>
- </list>
- </property>
- </bean>
- </beans>
其实罗列一下这些配置的主要功能:
1.adivce指定(插入代码-异常,事务或是之前之后)
2.pointcut切入点(指定类的某些方法)
3.传统使用:
Advice实现:1.AfterReturningAdvice:后接口
2.MethodBeforeAdvice:前接口
3.MethodInterceptor 前后接口
4.ThrowsAdvice 异常接口
配置代理类:
自定义代理类:ProxyFactoryBean
自动代理类:BeanNameAutoProxyCreator,DefaultAdvisorAutoProxyCreator
用于指定代码切入点具体位置(符合命名的方法或则表达式)
NameMatchMethodPointcutAdvisor,RegExpMethodPointcutAdvisor
4.基于aop标签配置
Adivce实现:自定义类
1.非异常:自定义方法,参数JoinPoint可选
2.异常:JoinPoint jp,Throwable ta参数列表
配置代理类:
无,都是基于配置标签
0 0
- Spring的AOP简单介绍和常用配置(3)-事务配置
- Spring的AOP简单介绍和常用配置(3)-事务配置
- Spring的AOP简单介绍和常用配置(1)
- Spring的AOP简单介绍和常用配置(2)
- spring的aop事务配置
- spring AOP 的事务配置
- Spring AOP事务配置
- spring aop 事务配置
- spring aop 事务配置
- spring AOP 事务配置
- Spring aop事务配置
- Spring AOP简单的配置(注解和xml配置)
- Spring AOP简单的配置(注解和xml配置)
- spring的AOP与事务配置
- spring 事务 aop:pointcut配置
- spring aop事务 propagation配置
- spring aop与事务配置
- spring aop xml配置事务
- 原型模式与创建者模型
- 关于Screen.availWidth和Screen.availHeight
- 判断SOCKET连接状态
- 如何正确配置Nginx+PHP及正确的nginx URL重写
- sencha touc 一个页面不同调用注意问题
- Spring的AOP简单介绍和常用配置(3)-事务配置
- Struts2_访问Web元素
- 比较各JAX-RS实现
- Matlab编程和其他语言的区别
- VxWorks中的中断应用设计要点
- [openstack]删除卷(delete volume)流程
- UISegmentedControl使用
- Servlet转到指定的HTML框架
- 利用QT_DEBUG_PLUGINS检查Qt的插件问题