软件艺术思考者  
混沌,彷徨,立志,蓄势...
公告
日历
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

随笔分类(86)

随笔档案(85)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
本文的理解来自实际应用程序。文件名是:applicationContext-hibernate1.xml
熟悉spring-hibernate架构的人对它肯定不陌生。它是由支持spring的组件在编程开始自动生成的,但我们不能总是停留在不管不问的状态。否则对程序构造就没有更深一步的理解。
如果理清applicationContext-hibernate1.xml的头绪或者手工写它,对于主动改进程序肯定是有益的。
我总结出来的顺序是:
1.建myDataSource
(org.apache.commons.dbcp.BasicDataSource).属性包括DBDriver,URL,UserName,Password.
2.mySessionFactory:
(org.springframework.orm.hibernate.LocalSessionFactoryBean)属性包括:mappingResources(hbm.xml的集合),HibernateProperties,myDataSource(注入1).
3.myTransactionManager
(org.springframework.orm.hibernate.HibernateTransactionManager)mySessionFactory(注入2)
以上三步是后面各项配置的基础。从后面开始我们就开始真正的配置我们的Beans了。
4.boDAO
(com.realnews.yourProject.service.dao.hibernate.boDAOs)注入mySessionFactory.
5.boTarget
(com.realnews.yourProject.service.spring.boServices) 注入boDAO
6.boService
(org.springframework.transaction.interceptor.TransactionProxyFactoryBean)注入myTransactionManager及boTarget
,并用transactionAttributes设置数据库并发控制级别。例如
<property name="transactionAttributes">
   <props>
    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="save*">PROPAGATION_REQUIRED</prop>
   </props>
7.循环第4到第6步即可配置所有需要配置的bean.
本文不是摘抄,如果想转摘,请注明出处:www.blogjava.net/zhanglijun33
如果想要更详细的资料可以给我留言。
posted on 2006-07-06 11:29 智者无疆 阅读(838) 评论(3)  编辑  收藏 所属分类: about spring
评论:
  • # re: Spring 应用程序配置文件的核心理解  白白 Posted @ 2006-07-06 11:44
    写的好啊,支持支持强烈支持!好样的。  回复  更多评论   

  • # re: Spring 应用程序配置文件的核心理解  智者无疆 Posted @ 2006-07-06 16:04
    注:property里面的name好像都是固定的,因为我改过,但xml解析器报错。还没有想透其中的原因,如果哪位高手明白,请多多指教  回复  更多评论   

  • # Spring 应用程序配置文件-struts配置  zhanglijun Posted @ 2008-03-01 11:45

    Spring配置事务在DAO层和业务逻辑层
    Spring配置事务在DAO层和Service层

    Spring通过AOP实现声明式事务管理。通常通过TransactionProxyFactoryBean设置Spring事务代理。我们需要一个目标对象包装在事务代理中。这个目标对象一般是一个普通Java对象的bean。当我们定义TransactionProxyFactoryBean时,必须提供一个相关的 PlatformTransactionManager的引用和事务属性。 事务属性含有上面描述的事务定义。

    PlatformTransactionManager:

    HibernateTransactionManager需要一个SessionFactory的引用

    JtaTransactionManager

    一.把事务放置在了DAO层:

    <!—hibernateTransactionManager-->

    <bean id="transactionManager"

    class="org.springframework.orm.hibernate3.HibernateTransactionManager">

    <property name="sessionFactory">

    <ref local="sessionFactory" />

    </property>

    </bean>

    <!—DAO层接口实现-->

    <bean id="companyDAOTarget"

    class="com.vstsoft.querycompany.dao.impl.CompanyDAOImpl">

    <property name="sessionFactory">

    <ref local="sessionFactory" />

    </property>

    </bean>

    <!—spring对DAO层的事务代理-->

    <bean id="companyDAOProxy"

    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

    <property name="transactionManager">

    <ref bean="transactionManager" />

    </property>

    <property name="target">

    <ref local="companyDAOTarget" />

    </property>

    <property name="transactionAttributes">

    <props>

    <prop key="insert*">PROPAGATION_REQUIRED</prop>

    <prop key="delete*">PROPAGATION_REQUIRED</prop>

    <prop key="find*">

    PROPAGATION_REQUIRED,readOnly

    </prop>

    </props>

    </property>

    </bean>

    <!—业务层接口实现,把DAO注入到Service里面-->

    <bean name="companyManageTarget"

    class="com.vstsoft.querycompany.service.impl.CompanyManageTarget">

    <property name="companyDAO">

    <ref bean="companyDAOProxy" />

    </property>

    </bean>

    <!—spring对Service层的代理-->

    <bean id="companyManageProxy"

    class="org.springframework.aop.framework.ProxyFactoryBean">

    <property name="proxyInterfaces">

    <value>com.vstsoft.querycompany.service.CompanyManage</value>

    </property>

    <property name="target">

    <ref bean="companyManageTarget" />

    </property>

    </bean>

    <!—配置struts访问,把service层注入到action里面-->

    <bean name="/company"

    class="com.vstsoft.querycompany.web.action.CompanyAction" singleton="false">

    <property name="companyManage">

    <ref local="companyManageProxy" />

    </property>

    </bean>

    二.把事务放置在了Service层:

    <!—jtaTransactionManager-->

    <bean id="jtaTransactionManager"

    class="org.springframework.transaction.jta.JtaTransactionManager" />

    <!—DAO层接口实现-->

    <bean id="companyDAOTarget"

    class="com.vstsoft.querycompany.dao.impl.CompanyDAOImpl">

    <property name="sessionFactory">

    <ref local="sessionFactory" />

    </property>

    </bean>

    <!—spring对DAO层的代理-->

    <bean id="companyDAOProxy"

    class="org.springframework.aop.framework.ProxyFactoryBean">

    <property name="proxyInterfaces">

    <value>com.vstsoft.querycompany.dao.CompanyDAO</value>

    </property>

    <property name="target">

    <ref bean="companyDAOTarget" />

    </property>

    </bean>

    <!—业务层接口实现,把DAO注入到Service里面-->

    <bean name="companyManageTarget"

    class="com.vstsoft.querycompany.service.impl.CompanyManageTarget">

    <property name="companyDAO">

    <ref bean="companyDAOProxy" />

    </property>

    </bean>

    <!—spring代理业务层的事务管理-->

    <bean id="companyManageProxy"

    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

    <property name="transactionManager">

    <ref local="jtaTransactionManager" />

    </property>

    <property name="transactionAttributes">

    <props>

    <prop key="set*">PROPAGATION_REQUIRED</prop>

    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>

    </props>

    </property>

    <property name="target">

    <ref bean="companyManageTarget" />

    </property>

    </bean>

    <!—配置struts访问,把service层注入到action里面-->

    <bean name="/company"

    class="com.vstsoft.querycompany.web.action.CompanyAction" singleton="false">

    <property name="companyManage">

    <ref local="companyManageProxy" />

    </property>

    </bean>

    在service层的接口实现CompanyManageImpl里面有个setData方法:按顺序执行数据查询,数据删除,数据插入数据库行为,如果哪一步出异常(运行时异常),事务回滚,只有所有行为都没成功,事务提交。
      回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © 智者无疆 Powered by: 博客园 模板提供:沪江博客


   观音菩萨赞