当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

让Spring架构减化事件配置[Java编程]

赞助商链接



  本文“让Spring架构减化事件配置[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

Spring推翻了从前的编程情势,引入了IOC等全新的概念,广受大家的爱好.目前大大都j2ee项目都已经采取Spring框架.Spring最大的问题是太多的配置文件,使得你不但需求保护程序代码,还需求额外去保护相关的配置文件.最典型的就是事件配置(注:这里的“事件配置”都指“声明式事件配置”),在Spring中举行事件配置除了定义对象自身的bean外,还需求定义一个举行事件代理的bean.假如你有n个类需求引入事件,那么你就必须定义2n个bean.保护这些bean的代价是非常高贵的,所以必必要对事件配置举行减化.假如你是基于Spring举行架构计划,那么作为一个好的架构计划师,应当把一些大众的方面举行简化,让项目的开辟人员只关心项目的业务逻辑,而不要耗费太多的精神去关心业务逻辑之外的太多东西.所以作为一个好的架构就应当把事件管理举行简化,让程序员花在编程之外的工作最小化.

1.Spring声明式事件配置的几种办法

在Spring中举行事件掌握首先要挑选得当的事件管理器,其次为程序挑选划分事件的战略.假如只有单个事件性资源,可以从“单一资源”的PlatformTransactionManger实现当中挑选一个,这些实现有:DataSourceTransactionManager,HibernateTransactionManager, JdoTransactionManager,PersistenceBrokerTransactionManager和JmsTransactionManager.按照你所采取的数据库长期化技术挑选.假如你的项目运行于支持JTA的服务器,那么将挑选JtaTransactionManger,将会支持多资源事件.

下表将为你挑选得当的事件管理器供应参考.

技术 事件管理器 内建的事件支持
JDBC DataSurceTransactionManager JtaTransactionManager JdbcTemplate和org.springframework.jdbc.object包中的全部类
IBATIS DataSourceTransactionManager JtaTransactionManager SqlMapClientTemplate和SqlClientTemplate
Hibernate HibernateTransactionManager JtaTransactionManager HibernateTemplate和HibernateInterceptor
JDO JdoTransactionManager JtaTransactionManager JdoTemplate和JdoInterceptor
ApacheOJB PersistenceBrokerTransactionManager JtaTransactionManager PersistenceBrokerTemplate
JMS JmsTransactionManager JmsTemplate

在划分事件时,我们需求举行事件定义,也就是配置事件的属性.事件的属性有传达行业,断绝级别,超时值及只读标志.TransactionAttribute接口指定哪些非常将招致一个回滚,哪些应当一次性提交.

(1) 利用ProxyFactoryBean 和TransactionInterceptor

<!--定义本地数据源-->
  <bean id="dataSource" name="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
  </bean>
<!-- !定义单个jdbc数据源的事件管理器-->
  <bean id="transactionManager"        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
  </bean>
<!—定义拦阻器-->
<bean id="transactionInterceptor"
     class="org.springframework.transaction.interceptor.TransactionInterceptor">
    <property name="transactionManager">
      <ref bean="transactionManager"/>
    </property>
    <property name="transactionAttributes">
      <props>
        <prop key="insert*">PROPAGATION_REQUIRED</prop>
        <prop key="update*">PROPAGATION_REQUIRED</prop>
        <prop key="save*">PROPAGATION_REQUIRED</prop>
        <prop key="find*">PROPAGATION_SUPPORTS,readOnly</prop>
        <prop key="get*">PROPAGATION_SUPPORTS,readOnly</prop>
        <prop key="*">PROPAGATION_SUPPORTS,readOnly</prop>
      </props>
    </property>
  </bean>
<!—定义业务对象-->
<bean id="com.prs.application.ehld.sample.biz.service.sampleService.target"
     class="com.prs.application.ehld.sample.biz.service.impl.SampleServiceImpl">
    <property name="userInfoDAO"
      ref="com.prs.application.ehld.sample.integration.dao.userInfoDAO">
     </property>
  </bean>
<!—定义业务对象的事件代理对象-->
<bean id="com.prs.application.ehld.sample.biz.service.sampleService" class="org.springframeword.aop.framework.ProxyFacgtoryBean">
    <property name="target"
      ref="com.prs.application.ehld.sample.biz.service.sampleService.target">
    </property>
    <property name="interceptorNames">
      <value>transactionInterceptor</value>
    </property>
  </bean>

通过ProxyFacgtoryBean和TransactionInterceptor组合利用,可以对事件举行更多的掌握.全部需求事件掌握的对象可以同享一个transactionInterceptor的事件属性.


  以上是“让Spring架构减化事件配置[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 用FactoryBean让Spring配置动起来
  • 让Spring架构减化事件配置
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .