今天在开发个人博客时,用到了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中,对象不由自己管理,而是由Spring容器统一管理,对象的创建、依赖关系的维护等都由容器来完成。 5. DI(依赖注入)方式:依赖注入是IoC实现的核心,分为接口注入、设值注入(通过setter方法)、构造注入...
8. **测试**:整合后的项目通常需要进行单元测试和集成测试,可以使用JUnit结合Mockito测试业务逻辑,以及Spring的TestContext框架进行Spring容器的集成测试。 这个案例提供了一个实用的起点,帮助开发者理解如何在...
2. **事务管理**:Spring的AOP特性提供了强大的事务管理能力,可以方便地在业务逻辑中实现事务控制。 3. **对象持久化**:Hibernate自动处理了大部分的对象关系映射工作,使得开发者能够更专注于业务逻辑而非数据...
在这种模式下,组件之间的控制权被转移到一个统一的容器上。 - **作用**:通过将对象创建和依赖关系管理的任务交给外部容器处理,IoC能够降低对象之间的直接耦合,使得对象更容易进行单元测试,并且提高了整个系统的...
- 使用`DelegatingActionProxy`来代理Struts的Action调用,这样可以将Action的创建、初始化等工作交给Spring容器管理。 - 在`struts-config.xml`中为每个Action指定类型,确保类型有效。 - 当Struts Action实例化...
- **IoC容器**:Spring通过IoC(Inversion of Control,控制反转)管理Bean的生命周期和依赖关系,使得对象之间的耦合度降低,提高代码的可测试性和可维护性。 2. **Struts2框架**: - **过滤器配置**:在`web....
- **传统实体Bean(CMP, Container-Managed Persistence)**:容器负责管理对象的持久化状态,开发者只需要提供业务逻辑。这种类型的Bean通常映射到数据库中的表。 - **Java Persistence API (JPA) 实体Bean**:...
在SSH整合中,Spring作为业务逻辑层(Service)和数据访问层(DAO)的纽带,协调各个组件的工作。例如,Spring可以配置Struts2的动作类(Action)和Hibernate的SessionFactory,使得请求能够正确地路由到相应的服务...
Spring框架的目标是为了简化企业级应用的开发,它提供了全面的基础架构支持,让开发者可以专注于业务逻辑的实现。 Spring框架的核心特性包括但不限于: - **IoC容器**:实现了依赖注入(Dependency Injection, DI)...
- **定义**:可以添加到主程序中以增加新功能的软件组件。 - **应用场景**:浏览器插件、办公软件扩展功能等。 **16. Address 地址** - **定义**:存储器中的位置标识。 - **应用场景**:内存管理、网络通信。 **...
其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理Struts和Hibernate。 WebStorage HTML新增的本地存储解决...