java

位置:IT落伍者 >> java >> 浏览文章

Spring框架概述(3)


发布日期:2022年06月02日
 
Spring框架概述

如下片段

DefaultTransactionDefinition def=newDefaultTransactionDefinition(); //new 一个事务

defsetPropagationBehavior(TransactionDefinitionPROPAGATION_REQUIRED); //初始化事务参数定义事务的传播类型;

TransactionStatus status =transactionManagergetTransaction(def); //获得事务状态

try{

trmit(status); //提交事务;

}catch(…){

transactionManagerrollback(status); //回滚事务;

}

Spring也提供声明式事务管理这是通过AOP实现的

大多数Spring用户选择声明式事务管理这是最少影响应用代码的选择因而这是和非侵入性的轻量级容器的观念是一致的

① 通常通过TransactionProxyFactoryBean设置Spring事务代理需要一个目标对象包装在事务代理中这个目标对象一般是一个普通Javabean当我们定义TransactionProxyFactoryBean时必须提供一个相关的PlatformTransactionManager的引用和事务属性事务属性含有事务定义例如:

PROPAGATION_REQUIREDMyCheckedException

PROPAGATION_REQUIRED

PROPAGATION_REQUIREDreadOnly

事务代理会实现目标对象的接口:这里是属性名是target的引用id是transactionServiceControl(&#; 使用CGLIB也可以实现具体类的代理只要设置proxyTargetClass属性为true即可如果目标对象没有实现任何接口这将自动设置该属性为true通常我们希望面向接口编程)&#; 使用proxyInterfaces属性来限定事务代理来代理指定接口也是可以&#; 也可以通过从orgspringframeworkaopframeworkProxyConfig继承或所有AOP代理工厂共享的属性来定制TransactionProxyFactoryBean行为

然后说说属性名是transactionAttributes意义

这里的transactionAttributes属性是定义在orgspringframeworktransactioninterceptorNameMathTransactionAttributeSource中的属性格式设置这个包括通配符的方法名称映射是很直观的insert*注意insert*的映射的值包括回滚规则MyCheckException指定如果方法抛出MyCheckException或它的子类事务会自动回滚可以用逗号分隔多个回滚规则前缀强制回滚+前缀指定提交(这允许即使抛出unchecked异常时也可以提交事务)PROPAGATION_REQUIRED指定事务传播范围

TransactionProxyFactoryBean允许你通过preInterceptorspostInterceptors属性设置前或后的拦截操作可以设置任意数量的前和后通过它们的类型可以是Advistor(切入点)MethodInterceptor或被当前Spring配置支持的通知类型例如ThrowAdviceAfterReturningAdvice或BeforeAdvice这些通知必须支持实例共享模式如果你需要高级AOP特性操作事务通过orgspringframeworkaopframeworkProxyFactoryBean而不是TransactionProxyFactory实用代理创建者

② 另一种声明方式BeanNameAutoProxyCreator

使用TransactionProxyFactoryBean当事务代理包装对象你可以完全控制代理如果需要用一致方式包装大量bean使用一个BeanFactoryPostProcessor的一个实现BeanNameAutoProxyCreator可以提供另外一种方法(Spring中一旦ApplicationContext读完它的初始化信息它将初始化所有实现BeanPostProcessor接口的bean并且让它们后处理ApplicationContext中所有其他的bean所以使用这种机制正确配置的BeanNameAutoProxyCreator可以用来后处理所有ApplicationContext中所有其他的bean)并且把它们用事务代理包装起来真正生成的事务代理和使用TransactionProxyFactoryBean生成的基本一致

最后总结一下Spring的优点

Spring是java平台上的一个开源应用框架 Spring框架本身并没有强制实行任何特别的编程模式在Java社区里Spring作为EJB模型之外的另外一个选择甚至是替代品而广为流行从设计上看Spring给予了Java程序员许多的自由度但同时对业界常见的问题也提供了良好的文档和易于使用的方法 Spring框架的核心功能在任何Java应用中都是适用的在基于Java企业平台上的web应用中大量的拓展和改进得以形成为此Spring获得了广泛的欢迎并被许多公司认可为具有战略意义的重要框架

               

上一篇:用Eclipse进行可视化Java界面设计(2)

下一篇:Eclipse开发工具简介