锁定老帖子 主题:ssh 三者集合的思想
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-21
一、首先应该明白,在SSH中,spring做了两次集成,第一次是与struts做了集成,第二次是与hibernate集成。 二、下面来谈第一次集成,与struts集成,通过修改struts-config.xml 中的action type 为 org.springframework.web.struts.DelegatingActionProxy,将action的控制转到spring 容器,当转到spring容器, spring会在spring的配置文件中找与action 的path属性同名的bean从而执行相应的类的操作.
xml 代码
三、第二次集成,与hibernate集成, DAO 继承了org.springframework.orm.hibernate3.support.HibernateDaoSupport类,所以可以简单的利用sping提供的一些功能。 HibnernateDaoSupport实现了HibernateTemplate与SessionFactory的关联。HibernateTemplate(用HibnernateDaoSupport里的getHibernateTemplate()可以获得)对Hibernate Session进行了封装,可省去获得Session实例、事务启动与提交/回滚以及异常处理等一系列步骤,所以非常简单。 java 代码
</property> 代码不全。 四、当然,你得首先把spring环境搭起来,通过在struts-config.xml <plug-in classname="org.springframework.web.struts.ContextLoaderPlugIn"></plug-in>
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-11-22
Spring 提供的方法集成并不好,如果使用Spring的ActionSupport替换的struts的Action造成spring代码的入侵,如果把action注册为spring bean,问题是你不得不多维护一个配置文件。。。另外可以使用spring工具类从web层取得ApplicationContext, 再按需要取得bean(用一个大的ServiceFacade类管理所有的service),只要几行代码就可以实现,同时也很容易切换到其它框架上(假如你不使用spring),我比较喜欢这种方式。
Spring提供的Hibernate集成,我最不喜欢的是为什么提供一个hibernate.cfg.xml文件,还需要配置其它的东西。我希望的一个配置sessionFactory时指定一个Hibernate配置文件就完了。这样才叫松散耦合。 |
|
返回顶楼 | |
发表时间:2007-11-22
hantsy 写道 Spring 提供的方法集成并不好,如果使用Spring的ActionSupport替换的struts的Action造成spring代码的入侵,如果把action注册为spring bean,问题是你不得不多维护一个配置文件。。。另外可以使用spring工具类从web层取得ApplicationContext, 再按需要取得bean(用一个大的ServiceFacade类管理所有的service),只要几行代码就可以实现,同时也很容易切换到其它框架上(假如你不使用spring),我比较喜欢这种方式。
Spring提供的Hibernate集成,我最不喜欢的是为什么提供一个hibernate.cfg.xml文件,还需要配置其它的东西。我希望的一个配置sessionFactory时指定一个Hibernate配置文件就完了。这样才叫松散耦合。 不需要hibernate.cfg.xml |
|
返回顶楼 | |
发表时间:2007-11-22
[quote="hantsy"]我最不喜欢的是为什么提供一个hibernate.cfg.xml文件,还需要配置其它的东西。我希望的一个配置sessionFactory时指定一个Hibernate配置文件就完了。这样才叫松散耦合。[/quote] 使用hibernate.cfg.xml才叫松耦合吧 |
|
返回顶楼 | |
发表时间:2007-11-22
是的,我的意思是只提供一个hibernate配置文件就好了,。。按照现在的Spring的hibernate集成方法,实际上是配置上的入侵。。。这不符合它的松散耦合理念。
|
|
返回顶楼 | |
发表时间:2007-11-22
spring-hibernate的整合是可以只提供hibernate本身的配置文件的,你只要告诉spring此文件的path即可;与struts也是一样,通过autowire只要在struts.xml中声明使用相应的processor,即可完全的避免侵入
|
|
返回顶楼 | |
发表时间:2007-11-22
hibernate.cfg.xm写法照原样
只需把applicationContext.xml改为 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"> <value>/WEB-INF/hibernate.cfg.xml</value> </property> </bean> <bean name="/login" class="com.yourcompany.struts.action.LoginAction" singleton="false"> <property name="dao"> <ref bean="UsersDAOImp"/> </property> </bean> </beans> 这样就可以不再重复配置 |
|
返回顶楼 | |
发表时间:2007-11-22
请问drliujia :与struts也是一样,通过autowire只要在struts.xml中声明使用相应的processor,即可完全的避免侵入。具体应该怎么做啊?谢谢
![]() |
|
返回顶楼 | |
发表时间:2007-11-23
之前我也比较倾向于使用Struts管理spring,这样可以在dao层做事务处理,不过整合的过程比较复杂,使用楼主的ssh整合方法较简单,最近有个项目,我在struts中添加
<controller> <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor" /> </controller> 从而省略在action中配置相同的type属性,可是启动服务器时报错,不知什么原因…… |
|
返回顶楼 | |
发表时间:2007-11-23
http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/web/struts/AutowiringRequestProcessor.html
|
|
返回顶楼 | |