Spring配置

一直想整理一下spring事务配置的问题,但是总是感觉表达的不够精确,今天在一本书上发现了这个问题,感觉说的挺到位的,就拿出来分享一下吧。
spring利用AOP机制来提供事务服务,事务管理器(TransactionManager)充当切面的作用。当某个目标对象的某些方法需要使用声名式事务方式服务的时候,首先需要创建TranstactionManager的Bean,该Bean一般需要一个数据源,例如hibernate的SessionFactory,然后再为目标Bean加上这样的切面即可,并且配好事务的属性(transactionAttributes)。

it_man的博客里看到一副spring事务配置的图,觉得挺有用的,这里就copy过来吧。

 
具体的配置可以参见下面的代码:
applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">


	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName"
			value="com.mysql.jdbc.Driver">
		</property>
		<property name="url" value="jdbc:mysql://localhost:3306/ylss"></property>
		<property name="username" value="root"></property>
		<property name="password" value="root"></property>
	</bean>
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<!-- 将Hibernate后台执行的sql动作都打印到控制台上 -->
				<prop key="hibernate.show_sql">true</prop> 
			</props>
		</property>
		
		<property name="mappingResources">
			<list>
				<value>
					com/leec/ylss/model/DTO/YlssZsType.hbm.xml
				</value>
				<value>
					com/leec/ylss/model/DTO/YlssKeywords.hbm.xml
				</value>
				<value>
					com/leec/ylss/model/DTO/YlssDataFrom.hbm.xml
				</value>
				
				<value>
					com/leec/ylss/model/DTO/YlssWebpages.hbm.xml
				</value>
				<value>
					com/leec/ylss/model/DTO/YlssSystem.hbm.xml
				</value>
				<value>
					com/leec/ylss/user/model/DTO/YlssUser.hbm.xml
				</value>
				<value>com/leec/ylss/model/DTO/YlssZs.hbm.xml
				</value>
			</list>
		</property>
	</bean>
		

	<!-- *************************************************************************** -->
	<!--设定Hibernate事务管理类,定义事务管理器,需要引入sessionFactory -->
	<bean id="myTransactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
	

	
	<!-- 配置事务拦截器-->
	<bean id="transactionInterceptor"
		class="org.springframework.transaction.interceptor.TransactionInterceptor">
		<!-- 事务拦截器bean 需要依赖注入一个事务管理器-->
		<property name="transactionManager">
			<ref bean="myTransactionManager" />
		</property>
		<property name="transactionAttributes">
			<!-- 下面定义事务传播属性-->
			<props>
				<!-- DAO常见方法前缀以及BO常见方法前缀,适用于DAO或BO的事务管理-->
				<!--为代理对象定义自己的事务属性:	  
					1、PROPAGATION_REQUIRED :支持当前的事务,如果不存在就创建一个新的。这是最常用的选择。   
					2、PROPAGATION_SUPPORTS :支持当前的事务,如果不存在就不使用事务。   
					3、PROPAGATION_MANDATORY :支持当前的事务,如果不存在就抛出异常。   
					4、PROPAGATION_REQUIRES_NEW :创建一个新的事务,并暂停当前的事务(如果存在)。   
					5、PROPAGATION_NOT_SUPPORTED :不使用事务,并暂停当前的事务(如果存在)。   
					6、PROPAGATION_NEVER :不使用事务,如果当前存在事务就抛出异常。   
					7、PROPAGATION_NESTED :如果当前存在事务就作为嵌入事务执行,否则与PROPAGATION_REQUIRED类似。	-->
				<prop key="new*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="find*">PROPAGATION_SUPPORTS,readOnly</prop>
				<prop key="reg*">PROPAGATION_SUPPORTS,readOnly</prop>
				<prop key="attach*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="merge*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="get*">PROPAGATION_SUPPORTS,readOnly</prop>
				<prop key="del*">PROPAGATION_REQUIRED,-Exception</prop>
			</props>
		</property>
	</bean>
	<!--定义BeanNameAutoProxyCreator ,该bean 是个bean 后处理器,无须被引用,因此
		没有id 属性,这个bean 后处理器,根据事务拦截器为目标bean 自动创建事务代理-->
	<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<!--指定对满足哪些bean name 的bean 自动生成业务代理-->
		<property name="beanNames">
			<!-- 下面是所有需要自动创建事务代理的bean-->
			<list>
				<!--  此处可增加其他需要自动创建事务代理的bean -->
				<!--  情况:DWR3的service无法增加到这里与spring集成,目前只能从使用new的方式了 -->
				<value>SysService</value>
				
			</list>
		</property>
		<!--下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
		<property name="interceptorNames">
			<list>
				<value>transactionInterceptor</value>
			</list>
		</property>
	</bean>
	
	
	<!--  定义业务对象 -->
	<bean id="SysService" class="com.leec.ylss.service.SysService" lazy-init="true">
	<!-- 依赖注入 -->
		<property name="datafromdao">
			<ref bean="YlssDataFromDAO" />
		</property>
		<property name="sysdao">
			<ref bean="YlssSystemDAO" />
		</property>
		
	</bean>
	<bean id="YlssZsTypeDAO"
		class="com.leec.ylss.model.DAO.YlssZsTypeDAO">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
	<bean id="YlssKeywordsDAO"
		class="com.leec.ylss.model.DAO.YlssKeywordsDAO">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
	<bean id="YlssDataFromDAO"
		class="com.leec.ylss.model.DAO.YlssDataFromDAO">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
	
	<bean id="YlssWebpagesDAO"
		class="com.leec.ylss.model.DAO.YlssWebpagesDAO">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
	<bean id="YlssSystemDAO"
		class="com.leec.ylss.model.DAO.YlssSystemDAO">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
	
	<bean id="YlssUserDAO"
		class="com.leec.ylss.user.model.DAO.YlssUserDAO">
		<property name="sessionFactory">
			<ref bean="sessionFactory"></ref>
		</property>
	</bean>
	<bean id="YlssZsDAO" class="com.leec.ylss.model.DAO.YlssZsDAO">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean></beans>


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的纺织品企业财务管理系统,源码+数据库+毕业论文+视频演示 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对纺织品企业财务信息管理的提升,也为了对纺织品企业财务信息进行更好的维护,纺织品企业财务管理系统的出现就变得水到渠成不可缺少。通过对纺织品企业财务管理系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。 纺织品企业财务管理系统通过MySQL数据库与Spring Boot框架进行开发,纺织品企业财务管理系统能够实现对财务人员,员工,收费信息,支出信息,薪资信息,留言信息,报销信息等信息的管理。 通过纺织品企业财务管理系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。 关键字:纺织品企业财务管理系统,薪资信息,报销信息;SpringBoot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值