您的位置:首页 > 编程语言 > Java开发

一种实用的Struts+Spring整合策略

2007-10-29 18:20 155 查看
这种整合策略其实非常简单,其思路是将获取业务的逻辑组件的方式放在父类中,其余的action则从父类中获取,下面是BaseAction的代码




public class BaseAction extends ActionSupport...{




public Object getBean(String beanName)...{


return getWebApplicationContext().getBean(beanName);


}


}

具体的业务Action






public LoginAction extends BaseAction...{




public ValidBean getVB()...{


return getBean("vb");


}




publicv ActionForward execute(......)...{


}


}

这种策略的另一个好处是,可以自由的更换整合方式,其业务Action无需改变

假设我们要使用Spring IOC特性,则可以修改BaseAction如下:






public class BaseAction extends ActionSupport......{


Object serviceObj;




public void setServiceObj(Object obj)...{


this.serviceObj=obj;


}




public Object getBean(String beanName)...{


return this.serviceObj;


}


}

这里的beanName实际上是没用的

我们还需要修改struts-config.xml,以使用DelegationRequestProcessor来实现整合






<action path="/login" name="loginForm"></action> <!---这里并不配置type属性-->


<Controller proccessorClass="org.springframework.web.struts.DelegatingRequestProccessor"/>


<plug-in ClassName="org.springframework.web.struts.ContextLoaderPlugIn">


<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>


</plug-in>



spring的配置文件做如下配置




<bean name="/login" class="lee.LoginAction" singleton="false">


<property name="serviceObj">


<ref bean="obj"/>


</property>


</bean>





这种策略有三个好处

1.可以在不同的整合策略中自由切换
2.避免重复创建DelegatingActionProxy实例
3.使业务Action不受侵入,避免代码污染
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: