让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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |