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

20090320 (Spring integration)

阅读更多

Integrate with Struts:

Spring plugin features:
1.Allow Actions, Interceptors, and Results to be created by Spring
2.Struts-created objects can be autowired by Spring after creation
3.Provides two interceptors that autowire actions, if not using the Spring ObjectFactory


To enable spring plugin:
1.Include struts2-spring-plugin-x-x-x.ja in classpath
2.If you are using more than one object factory, use:
struts.objectFactory = org.apache.struts2.spring.StrutsSpringObjectFactory
or
<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" />


Settings:
struts.objectFactory.spring.autoWire:
The autowire strategy name name,type,auto, or constructor
struts.objectFactory.spring.autoWire.alwaysRespect:
Whether the autowire strategy should always be used, or if the framework should try to guess the best strategy based on the situation false for backwards-compatibility  true or false
struts.objectFactory.spring.useClassCache:
Whether to have Spring use its class cache or not true true or false


Sets the "class" attribute to a spring bean id, by default, the framework will at least try to use Spring to create all its objects. If the object cannot be created by Spring, then the framework will create the object itself.


Struts will use WebApplicationContext created by org.springframework.web.context.ContextLoaderListener, remember to use singleton="false" for action object.


2 interceptors provided by spring plugin are ActionAutowiringInterceptor and SessionContextAutowiringInterceptor.


Integrate with Hiberate:

org.springframework.beans.factory contains interfaces implemented by special beans, e.g. FactoryBean, BeanNameAware.


org.springframework.orm.hibernate3.LocalSessionFactoryBean is a factory bean, it creates a hibernate SessionFactory. It provides setter using which you can configurate hibernate, these setters including: mappingResources, hibernateProperties, configLocations and so on.


HibernateTemplate and HibernateDaoSupport just add support for exception wrapping, which wrap hibernate exception into spring dao exception.


you can use raw hibernate API while still participate in spring's transaction management


Use Spring managed transaction:

TransactionDefinition, defines: name, readOnly, timeout, isolationLevel, propagationBehavior.
TransactionStatus, status (boolean): hasSavePoint, isCompleted, isNewTransaction, isRollbackOnly; method: setRollbackOnly.
PlatformTransactionManager:
// may or may not create a new transaction, depends on whether there's an outter transaction and how TransactionDefinition is defined.
TransactionStatus status = manager.getTransaction(definition);
try {
    ...
    if (status.isRollbackOnly()) {
 manager.rollback(status);
    } else {
        manager.commit(status);
    }
} catch (Exception e) {
    // may has code to determine whether to rollback or commit base on rollbackFor/notRollbackFor
    manager.rollback(status);
}


Propagtion level: MANDATORY, REQUIRED, REQUIRES_NEW, NOT_SUPPORTED, SUPPORTS, NEVER, NESTED
Inside a (top-level or nested?) transaction?
What will happen? throw exception / do nothing / create a new (maybe nested) transaction / suspend current transaction


To enable spring managed transaction:
1.Define transaction manager bean:
<bean id="txManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory" />
</bean>
2.Define an advice, the "tx:method" just associate method with transaction definition and (not) rollback for.
<tx:advice id="txAdvice">
  <tx:attributes>
    <tx:method name="get*" read-only="true"/>
    <tx:method name="*"/>
   </tx:attributes>
</tx:advice>
3.Define advisor and pointcut
<aop:config>
  <aop:pointcut id="serviceOperation" expression="execution(* x.y.service..*Service.*(..))"/>
  <aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice"/>
</aop:config>


To enable annotation based transaction management:
1.Define transaction manager bean.
2.Marked as annotation driven.
<tx:annotation-driven transaction-manager="txManager"/>
3.Place @Transactional annotation before an interface definition, a method on an interface, a class definition, or a public method on a class.


You certainly can place the @Transactional annotation on an interface (or an interface method), but this will only work as you would expect it to if you are using interface-based proxies.
Method annotation will overrides class annotation.
@Transactional settings are the same as advice


How to define a default transaction isolation level?
Seems no way to set a default value using spring, using mysql+innodb, postgresql or oracle, the default is read committed.

分享到:
评论

相关推荐

    Spring Integration + Spring WS 整合

    Spring Integration + Spring WS 整合 在 Java 领域中,Spring Integration 和 Spring WS 是两个常用的框架,它们分别负责集成系统和 Web 服务。今天,我们将探讨如何将这两个框架整合在一起,实现一个完整的 Web ...

    spring integration in action

    ### Spring Integration in Action #### Part 1 - 背景 **1: Spring Integration 的介绍** - **Spring Integration 概览:** Spring Integration 是一个基于 Spring 框架的企业集成解决方案,它提供了一种声明式...

    Spring Integration API(Spring Integration 开发文档).CHM

    Spring Integration。 官网 Spring Integration API。 Spring Integration 开发文档。

    spring source spring integration in action 随书源码 example code

    《Spring Source Spring Integration in Action》是一本专注于Spring Integration框架的实战指南,旨在帮助读者深入理解和应用这个强大的系统集成工具。Spring Integration是Spring框架家族的一部分,它提供了一种...

    Spring Integration 相关PDF

    本文是一篇关于Spring Integration框架的介绍与分析,该框架是SpringSource公司的产品,旨在帮助企业应用间的集成。文章深入探讨了企业应用集成(EAI)的定义、消息传递的概念以及Spring Integration框架的基本概念...

    spring Integration 介绍

    ### Spring Integration介绍 #### 一、Spring Integration概览 **Spring Integration** 是Spring框架的一个扩展项目,它提供了构建企业集成应用程序所需的各种功能和支持。通过利用现有的Spring编程模型和依赖注入...

    Pro Spring Integration

    《Pro Spring Integration》是一本专注于Spring Integration框架的书籍,由多位作者撰写,旨在帮助读者构建企业级集成解决方案。Spring Integration是为了解决企业中不同应用程序之间数据和服务集成而产生的解决方案...

    Spring Integration源码

    《Spring Integration 源码深度解析》 Spring Integration 是 Spring 框架的重要组成部分,它为 Java 应用提供了一种轻量级、声明式的集成解决方案,使得在不同系统、服务间的数据交换变得简单易行。Spring ...

    pro spring integration.pdf (英文原版非扫描 高清)

    《Pro Spring Integration》是Spring框架领域的一本权威著作,由Manning出版社出版,提供英文原版,非扫描且质量高清,确保读者可以清晰地阅读和理解其中的代码示例和图表。这本书深入探讨了Spring Integration这一...

    spring integration master

    Spring Integration 是一个基于 Spring 框架的轻量级企业级集成库,它提供了一种声明式的方法来处理系统间的消息传递和数据流。这个"spring integration master"压缩包文件很可能是包含了一系列示例,帮助开发者更好...

    Spring Integration Essentials epub

    Spring Integration Essentials 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

    pro_spring_integration.pdf (英文原版非扫描)

    ### Spring Integration核心知识点详解 #### 一、Spring Integration概述 **Spring Integration** 是Spring家族中的一个强大组件,它提供了一套全面的企业级集成解决方案。本书《Pro Spring Integration》旨在为...

    spring_integration_in_action.pdf

    《Spring Integration in Action》这本书是关于Spring Integration框架的深度指南,该框架是Spring生态系统的组成部分,专注于企业应用集成。Spring Integration提供了一种简单且高效的方式来连接不同系统、服务和...

    spring-integration2.03

    《Spring Integration 2.0.3:源码与实践解析》 Spring Integration 是 Spring 框架的一个扩展,旨在提供轻量级、企业级的集成解决方案,它简化了应用程序之间的数据传输,支持多种协议和消息传递模式。在本文中,...

    Pro Spring Integration (Apress)

    ### Spring Integration概述与核心概念 #### 一、Spring Integration简介 Spring Integration是由Spring框架团队开发的一个强大而灵活的企业级应用集成框架。它基于Spring的核心功能,提供了丰富的抽象层来简化...

    Spring Integration 中的新增功能

    **Spring Integration 概述** Spring Integration 是 Spring 框架的一个扩展,旨在简化企业级应用中的集成问题。它提供了一种声明式的方式,用于处理系统间的异步通信、消息传递和数据转换。Spring Integration ...

Global site tag (gtag.js) - Google Analytics