`
visionary_2006
  • 浏览: 131661 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring容器中为业务逻辑组件增加事务控制

阅读更多

今天在开发个人博客时,用到了aop思想,主要体现在事务管理上.但由于编程经验不是很足,搞了整整一个下午才装注册和登陆系统粗粗的做好.时间主要浪费在了调试上.

下面把我今天错误的地方跟在家说一说,相信可能对你有所帮助.

下面把我的applicationContext.xml文件先放出来.

 

<?xml version="1.0" encoding="GB18030"?>
<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="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="configLocation"
			value="classpath:hibernate.cfg.xml">
		</property>
	</bean>
	
	<bean id="userDao" class="loginreg.dao.UserDaoHibernater">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

	<bean id="mgr" class="loginreg.bussiness.UserManagerImpl">
		<property name="userDao" ref="userDao"></property>
	</bean>

	<!-- 配置使用hibernate局部事务策略 -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<!-- 定义事务拦截器 -->
    <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager" ref="transactionManager"/>
    	<property name="transactionAttributes">
		    <props>
			    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
		    	<prop key="*">PROPAGATION_REQUIRED</prop>
		    </props>
	    </property>
	</bean>
	
	<!-- 定义BeanNameAutoProxyCreator-->
	<bean
		class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames">
			<list>
				<value>mgr</value>
			</list>
		</property>
		<!--  下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
		<property name="interceptorNames">
			<list>
				<value>transactionInterceptor</value>
			</list>
		</property>
	</bean>

</beans>

以上配置是正确的,但是在我发现错误之前,始终会出现这样的错误:

 

写道
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionInterceptor' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'transactionAttributes' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.util.StringUtils.containsWhitespace(Ljava/lang/String;)Z
Caused by: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessException details (1) are:
PropertyAccessException 1:
org.springframework.beans.MethodInvocationException: Property 'transactionAttributes' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.util.StringUtils.containsWhitespace(Ljava/lang/String;)Z
Caused by: java.lang.NoSuchMethodError: org.springframework.util.StringUtils.containsWhitespace(Ljava/lang/String;)Z

稍微看一下,就会发现是说少了一个方法.我随着这个方法进入spring.jar源文件,找到这个方法,的确没发现有关的方法.我查了很多文档,配置没有任何错误.当时一直没有想到spring.jar版本过低,因为我用的是最新版的myeclipse,后来在网业上偶尔看了几行字,受到了启发,我下了最新版的spring.jar.2.5版本的,结果调试成功.

分享到:
评论

相关推荐

    Spring.pdf

    在Spring中,对象不由自己管理,而是由Spring容器统一管理,对象的创建、依赖关系的维护等都由容器来完成。 5. DI(依赖注入)方式:依赖注入是IoC实现的核心,分为接口注入、设值注入(通过setter方法)、构造注入...

    struts2整合Spring和hibernate案例

    8. **测试**:整合后的项目通常需要进行单元测试和集成测试,可以使用JUnit结合Mockito测试业务逻辑,以及Spring的TestContext框架进行Spring容器的集成测试。 这个案例提供了一个实用的起点,帮助开发者理解如何在...

    struts+hibernate+spring整合文档

    2. **事务管理**:Spring的AOP特性提供了强大的事务管理能力,可以方便地在业务逻辑中实现事务控制。 3. **对象持久化**:Hibernate自动处理了大部分的对象关系映射工作,使得开发者能够更专注于业务逻辑而非数据...

    Spring框架

    在这种模式下,组件之间的控制权被转移到一个统一的容器上。 - **作用**:通过将对象创建和依赖关系管理的任务交给外部容器处理,IoC能够降低对象之间的直接耦合,使得对象更容易进行单元测试,并且提高了整个系统的...

    SSH搭建时的关键内容,困扰你我的关键点

    - 使用`DelegatingActionProxy`来代理Struts的Action调用,这样可以将Action的创建、初始化等工作交给Spring容器管理。 - 在`struts-config.xml`中为每个Action指定类型,确保类型有效。 - 当Struts Action实例化...

    三大框架ssh-整合

    - **IoC容器**:Spring通过IoC(Inversion of Control,控制反转)管理Bean的生命周期和依赖关系,使得对象之间的耦合度降低,提高代码的可测试性和可维护性。 2. **Struts2框架**: - **过滤器配置**:在`web....

    EJB例子

    - **传统实体Bean(CMP, Container-Managed Persistence)**:容器负责管理对象的持久化状态,开发者只需要提供业务逻辑。这种类型的Bean通常映射到数据库中的表。 - **Java Persistence API (JPA) 实体Bean**:...

    ssh框架整合增删改查项目源码

    在SSH整合中,Spring作为业务逻辑层(Service)和数据访问层(DAO)的纽带,协调各个组件的工作。例如,Spring可以配置Struts2的动作类(Action)和Hibernate的SessionFactory,使得请求能够正确地路由到相应的服务...

    工作资源汇总

    Spring框架的目标是为了简化企业级应用的开发,它提供了全面的基础架构支持,让开发者可以专注于业务逻辑的实现。 Spring框架的核心特性包括但不限于: - **IoC容器**:实现了依赖注入(Dependency Injection, DI)...

    程序员英语手册

    - **定义**:可以添加到主程序中以增加新功能的软件组件。 - **应用场景**:浏览器插件、办公软件扩展功能等。 **16. Address 地址** - **定义**:存储器中的位置标识。 - **应用场景**:内存管理、网络通信。 **...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理Struts和Hibernate。 WebStorage HTML新增的本地存储解决...

Global site tag (gtag.js) - Google Analytics