项目使用了Spring的声明式事务管理,其是通过Spring的Aop实现的,主要是对于所有开发人员都是透明的,不用开发人员进行管理。同时使用了Spring的自动代理功能进行实现。
主要由一下几部分声明组成,需要注意的是,Spring对于关键的一些类不关心名称,只关心类型,它根据类型进行装配。
A)声明自动代理类
xml 代码
- <bean id="proxyCreator"
- class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" />
2)事务拦截增强,定义一些事务管理的规则
xml 代码
- <bean id="txInterceptor"
- class="org.springframework.transaction.interceptor.TransactionInterceptor">
- <property name="transactionManager" ref="transactionManager" />
- <property name="transactionAttributes">
- <props>
- <prop key="save*">
- PROPAGATION_REQUIRED,-Exception
- </prop>
- <prop key="delete*">
- PROPAGATION_REQUIRED,-Exception
- </prop>
- <prop key="get*">
- PROPAGATION_REQUIRED,readOnly,-Exception
- </prop>
- <prop key="detail*">
- PROPAGATION_REQUIRED,readOnly,-Exception
- </prop>
- <prop key="*">
- PROPAGATION_REQUIRED,readOnly
- </prop>
- </props>
- </property>
- </bean>
3)定义pointcut和advice的装配器,即告知Spring,某个增强与某个切入点关联,在这里实现了一个切入点(pointcut) com.ufida.cvms.util.proxy.AutoLogicPointCut.
xml 代码
- <bean id="advisor"
- class="org.springframework.aop.support.DefaultPointcutAdvisor">
- <property name="pointcut">
- <bean class="com.ABC.bcd.util.proxy.AutoLogicPointCut" />
- </property>
- <property name="advice">
- <ref bean="txInterceptor" />
- </property>
- </bean>
切入点代码如下,主要实现Pointcut接口即可以。GetClassFilter方法中判断符合切入点类的规则。GetMethodMatcher返回符合切入点类中方法的规则。在这里,只增强了DefaultLogic类,及其子类。方法是类中的所有方法。因为Logic是业务得重要操作地方,所以事务管理到Logic就可以了。
java 代码
- public class AutoLogicPointCut implements Pointcut {
-
-
-
-
- public ClassFilter getClassFilter() {
- return new RootClassFilter(DefaultLogic.class);
- }
-
-
-
-
- public MethodMatcher getMethodMatcher() {
- return MethodMatcher.TRUE;
- }
-
- }
分享到:
相关推荐
总结来说,这些jar包构成了SSM事务管理的基础,通过AOP和动态代理技术,实现了对数据库操作的事务控制,确保了系统的稳定性和数据一致性。理解并掌握这些核心jar包的作用,对于优化SSM项目、提升开发效率和代码质量...
总结来说,本例子通过`TransactionProxyFactoryBean`和`@Transactional`展示了如何在Spring中实现声明式事务管理,这两种方式都利用了AOP来封装事务逻辑,使代码更加整洁,降低了事务管理的复杂性。在实际应用中,...
- 声明式事务:在XML配置文件或注解中声明事务边界,例如使用@Transactional注解标记在方法上,Spring会自动管理事务的开始、提交或回滚。 - 编程式事务:通过TransactionTemplate或PlatformTransactionManager接口...
### Spring事务管理的方法 #### 一、引言 在企业级应用开发中,事务管理是一项至关重要的技术。Spring框架作为Java领域中一个非常流行...在实际项目开发中,可以根据具体的业务需求和技术栈选择合适的事务管理模式。
总结,本项目展示了如何在Spring MVC和Hibernate环境中实现事务管理,通过MyEclipse自动生成的包和配置文件,简化了开发流程。在实际应用中,这样的整合能够提供高效且易于维护的Web应用,同时,声明式事务管理极大...
**概念介绍:** 使用 AOP(面向切面编程)的思想,通过定义一个事务管理拦截器来拦截特定的方法调用,实现事务的自动管理。 **配置示例:** ```xml <!-- 配置事务管理器 --> class="org.springframework.orm....
总结来说,这个案例将展示如何在Spring中配置Mybatis和MySQL,以便在处理数据库操作时使用Spring的声明式事务管理。Maven将用于构建和管理整个项目,包括依赖的解决和项目的打包。通过学习这个案例,开发者可以深入...
### JAVA真实包装项目经验——二手车项目面试知识点...通过以上内容的整理和总结,可以清晰地了解到该项目的开发流程、技术选型、个人职责以及项目架构等方面的知识点,有助于面试者更好地准备相关的面试题目和场景。
【软件开发与项目管理】课程案例探讨了一个基于JSP的学生评优管理系统的设计与实现,旨在提升教育机构的管理效率和信息安全性。系统针对传统管理方式存在的问题,如手动记录信息的错误率高、效率低下、信息无法规范...
"MyBatis与Spring的整合-添加事务"的项目可能包含了一个示例,演示了如何在Spring环境中配置MyBatis并实现事务管理。通过这种方式,开发者可以利用MyBatis的简单易用和Spring的强大功能,构建高效且易于维护的Java...
总结一下,Spring基于AOP实现的事务管理通过TransactionProxyFactoryBean,结合声明式事务配置,能够提供一种高效且易于维护的事务解决方案。它允许我们在不修改业务逻辑的情况下,统一管理和控制事务,提升了代码的...
在Spring框架中,自动代理是一种重要的特性,它允许我们在不修改原有代码的情况下,为bean添加额外的功能,如事务管理、AOP(面向切面编程)等。本篇将深入探讨如何利用Spring实现自动代理,特别是关注`...
【基于MongoDB和网络爬虫的数据管理项目总结】 在当今数据驱动的世界中,有效地管理和处理大量数据至关重要。MongoDB作为一种流行的NoSQL数据库,以其高效、灵活的非关系型数据存储能力,广泛应用于大数据管理和...
本文将通过对"spring-trasaction"项目的源码分析,深度探讨Spring事务管理的核心机制。 一、事务的基本概念 事务是数据库操作的基本单元,具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和...
总结起来,通过Spring整合JDBC和动态代理模式,我们可以将复杂的事务管理从业务代码中解耦,提高代码的可读性和可维护性。同时,这种设计也遵循了单一职责原则,使得业务逻辑更加清晰,易于扩展和维护。在实际开发中...
总结,自动点滴管理系统展示了WCF在.NET 3.5框架下的强大功能,通过学习此项目,开发者可以深入了解WCF的使用方法,为构建自己的分布式系统打下坚实基础。在实践中不断探索和优化,才能更好地发挥WCF的优势,构建出...
总结来说,Spring的事务配置方式多样,可以根据项目需求选择合适的方式。声明式事务管理更推荐,因为它将事务逻辑与业务代码分离,提高了代码的可维护性。而代理机制的选择则取决于是否需要对事务进行特定的定制。
总结,"spring代理实现项目"主要涉及到的是Spring的AOP特性,包括静态代理和动态代理的运用,以及如何通过代理模式来实现如事务管理等跨切面关注点。在项目中,我们可以通过阅读和分析源码,理解Spring如何根据不同...
编程式事务管理需要在代码中显式地开始、提交、回滚事务,而声明式事务管理则更加灵活,只需在配置文件中声明事务属性,Spring会自动管理事务的生命周期。 在Spring 1.2版本中,Spring的事务管理主要是基于...
4. **第五种方法:使用@Transactional注解**:这种方式是最常用的声明式事务管理方式,通过在方法上添加@Transactional注解来自动管理事务。 - **特点**:简单易用,能够快速集成到现有项目中。 - **适用场景**:...