文档章节

Spring 事务管理

Oscarfff
 Oscarfff
发布于 2015/05/13 20:57
字数 1175
阅读 146
收藏 8
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" //申明通知
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">//申明schema

	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	
	<!--注解驱动 Enables the Spring MVC @Controller programming model -->    
    <!-- 需要访问数据库,所以引入事务管理 -->
    <bean id="userDao" class="me.chanjar.weixin.cp.dao.impl.UserinfoDaoimpl" >
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	
<!-- 配置c3p0 sqlserver数据源 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
	   <property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property> 
	   <property name="jdbcUrl" value="jdbc:sqlserver://localhost:1433;databaseName=getsalary"></property>
	   <property name="user" value="sa"></property>
	   <property name="password" value="sa123"></property>
	</bean>
	<!-- 配置hibernate的sessionfactory bean 由spring 的localsessionfactorybean提供-->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
	  <!-- 配置数据源 -->
	  <property name="dataSource" ref="dataSource"></property>  
	  <!-- 配置hibernate的配置文件和名称 -->
	  <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
	  <!-- 配置hibernate映射文件 -->
	  <property name="mappingLocations" value="classpath:me/chanjar/weixin/cp/po/*.hbm.xml"></property>
	</bean>
	<!-- 配置spring的事务管理器 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
	   <property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<!-- 通知配置事务属性,需要事务属性管理器transactionmanager -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
	<!-- 事务的传播属性 -->
	  <tx:attributes>
	  <!-- all methods starting with get are read-only -->
	    <tx:method name="get*"   read-only="true"/>
	    <tx:method name="query*" read-only="true"/>
	    <tx:method name="ad*"    propagation="REQUIRED"/>
	    <tx:method name="updat*" propagation="REQUIRED"/>
	    <tx:method name="del*"   propagation="REQUIRED"/>
	  </tx:attributes>
	</tx:advice>
	<!-- 配置事务的aop,并且把事务属性和切点关联起来 -->
	<aop:config>
	<!-- 配置切点 -execution(*返回值,impl文件下面的某个类的所有方法-->
	      <aop:pointcut expression="execution(* me.chanjar.weixin.cp.dao.impl.*.*(..))" id="pointcut" />
	      <aop:advisor  advice-ref="txAdvice" pointcut-ref="pointcut"/>
	</aop:config>
	
</beans><!--application-Context.xml-->

如上是application-Context.xml配置文件。下面看一下web.xml 

<?xml version="1.0" encoding="utf-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
<servlet>
<servlet-name>Test</servlet-name> 
<servlet-class>me.chanjar.weixin.cp.cpservlet.MpServlet</servlet-class>
</servlet> 
<servlet-mapping> 
<servlet-name>Test</servlet-name> 
<url-pattern>/justdoit</url-pattern> 
</servlet-mapping> 

<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

</web-app>

如下是springmvc-servlet.xml的配置文件。知道为啥叫spring-mvc的配置文件吗?是因为我在web.xml配置文件里面说明了,dispatch-servlet 的名称为springmvc的原因吗????

<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	
	<!--注解驱动 Enables the Spring MVC @Controller programming model -->

	<mvc:annotation-driven></mvc:annotation-driven>
		<!-- 扫描器 -->
    <context:component-scan base-package="me" />
  
	<!-- 配置视图解析器。Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 前缀 -->
		<property name="prefix" value="/" />
		<!-- 后缀 -->
		<property name="suffix" value=".jsp" />
	</bean>
	<!-- Spring分段文件上传所必须的 ,用于检查请求中是否包含multipart  
    see: http://www.html.org.cn/books/springReference/ch13s08.html  
    -->  
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
          <property name="maxUploadSize" value="100000"/>
    </bean> 
    <!--添加spring mvc intercepters-->
     <mvc:interceptors>
      <bean class="me.chanjar.weixin.cp.Interceptor.MyHandlerInterceptor">
      </bean>
    </mvc:interceptors>
    <!-- 添加intercepters结束 -->
	<import resource="classpath:applicationContext.xml"/>
</beans><!--springmvc-servlet.xml-->

一、spring 事务申明步骤 

1.1 首先申明命名空间和schema

           首先需要引入aop 以及tx 的申明和schema

xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" //申明通知
 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">//申明schema

1.2 申明组件扫描的包路径-主要用于实例化注解的类

<context:componet-scan base-package=""/>

注意:spring 通过注解实例化对象,默认生成的bean是非限定的类名,比如:@Component,@Repository,@Service,@Controller 注解的对象,调用的时候只需要使用首字母小写的类 getBean("首字母小写的类名");

因为我在springmvc-servlet.xml文件里面申明了扫描包路径,并且将applicationContext.xml引入。所以就不需要在applicationContext.xml申明了。


© 著作权归作者所有

Oscarfff
粉丝 73
博文 816
码字总数 97116
作品 0
崇明
后端工程师
私信 提问
MyBatis在Spring中的事务管理

项目中经常遇到MyBatis与Spring的组合开发,并且相应的事务管理交给Spring。今天我这里记录一下Spring中Mybatis的事务管理。 先看代码: spring-context.xml db.properties db.sql UserDAO....

linxyz
2018/07/24
94
0
Spring AOP 日志拦截器的事务管理

如果要在方法执行前或后或抛出异常后加上一个自己的拦截器,或者一个环绕拦截器,在拦截器中执行一些操作,比如执行一些数据库操作,记录一些信 息,这些操作通过调用一个服务类的方法来执行...

哲别0
2018/05/18
405
0
Spring的事务管理实现原理初探

这里主要是通过分析部分源码进行剖析Spring事务管理的实现原理。 再分析源码前,现从理论上大概分析哈: 纯JDBC操作数据库的基本步骤: 1. 获取连接 Connection conn = DriverManager.getCon...

rockypeng
2014/01/19
0
0
Spring编程式和声明式事务实例讲解

Java面试通关手册(Java学习指南):https://github.com/Snailclimb/JavaGuide 历史回顾: 可能是最漂亮的Spring事务管理详解 Spring事务管理 Spring支持两种方式的事务管理: 编程式事务管理...

snailclimb
2018/05/23
0
0
Spring事务管理机制的实现原理-动态代理 .

分析一下Spring事务管理机制的实现原理。由于Spring内置AOP默认使用动态代理模式实现,我们就先来分析一下动态代理模式的实现方 法。动态代理模式的核心就在于代码中不出现与具体应用层相关联...

swk998741
2014/03/17
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
10
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
6
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
11
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部