论坛首页 Java企业应用论坛

WW的Action是否用prototype性能对比[变更]

浏览 14650 次
该帖已经被评为精华帖
作者 正文
   发表时间:2006-02-15  
Tin 写道
不好意思,先看看robbin推荐的文章。
不过,我想问一下:
我使用了Spring的HibernateDaoSupport,如果不给bean配置一个transaction就会报Not able to obtain connection错误:
http://forums.hibernate.org/viewtopic.php?t=945337&highlight=&sid=cff435dde0e8b0287c67ff436d894445

因为我们现在在做的Web项目没有service层,所以如果不把transaction配置到action,则只能配置到DAO了,这样似乎也没有意义。因为Hibernate已经有了transaction控制了。

而且,除了这两个地方,没有用到Spring AOP的地方了么?
Acegi我倒是不在乎,因为Webwork有Inteceptor,方便作security。


还是必须有Service层的,DAO层倒不是必须的。

Spring AOP老实说我没有在应用项目中使用,不过考虑到AJAX Web Remoting,会跨过webwork直接调用spring bean,这时候spring AOP就派上用场了。
0 请登录后投票
   发表时间:2006-02-15  
robbin 写道
引用
robbin的意思是设置了webwork.objectFactory=spring后,webwork的action不要交给spring 的 bean容器管理就可以拿到service了? 也就是所有的action还是直接在xwork.xml里面定义?还是我理解上面的偏差呢?


对的,不需要在spring里面做任何配置。action直接定义在xwork.xml里面照旧,只要加一句webwork.objectFactory=spring,Service就自己来啦~


晚上回来试了一下,确实可以。不过下午在公司没有注意想到一个问题,就是静态注入一个属性不知道xwork里面怎么配置实现?

比如说 在我的action里面有一个属性叫functionID 有一个对应的setFunctionID() 方法,我现在想在配置文件里面静态的织入functionID的值,我应该怎么样设置呢?还是再次回到spring里面去配置呢?
0 请登录后投票
   发表时间:2006-02-16  
lingcm 写道

比如说 在我的action里面有一个属性叫functionID 有一个对应的setFunctionID() 方法,我现在想在配置文件里面静态的织入functionID的值,我应该怎么样设置呢?还是再次回到spring里面去配置呢?


<action name="blah" class="com.blah.blahAction">
  <param name="functionId">110</param>
  ......
0 请登录后投票
   发表时间:2006-02-16  
<action ......>
    ......
    <param name="functionID">xxx</param>
</action>

声明functionID为action的一个属性,给一个set方法就拿到了。
0 请登录后投票
   发表时间:2006-02-16  
robbin 写道

还是必须有Service层的,DAO层倒不是必须的。

Spring AOP老实说我没有在应用项目中使用,不过考虑到AJAX Web Remoting,会跨过webwork直接调用spring bean,这时候spring AOP就派上用场了。


我们封装一个不错的BaseDAO实现,所以DAO层实现的比较容易。如此我们这个小项目里面Service倒是不全部有的,只有需要的时候才有。但是如此使用HibernateDAOSupport时的事务封装就只能转到DAO层了,没有意义呀。

AJAX Web Remoting的security不容易搞吧。如果用url的方式倒是还好,如果用XMLHttpRequest就难了吧,是不是只能用Container的security了?

还有SpringProxyableObjectFactory如何配置到Webwork呢?这个性能似乎不错。

帖子里面有些结论上下文没有强调,所以结论倾向性不太对,我修改一下
0 请登录后投票
   发表时间:2006-02-16  
Tin 写道

还有SpringProxyableObjectFactory如何配置到Webwork呢?这个性能似乎不错。


改一下WebWorkSpringObjectFactory类的继承关系,重新打包! 其它配置不变!
WebWorkSpringObjectFactory extends SpringObjectFactory implements ObjectFactoryInitializable


WebWorkSpringObjectFactory extends SpringProxyableObjectFactory implements ObjectFactoryInitializable
0 请登录后投票
   发表时间:2006-02-16  
哈哈,居然又发现Trasaction配置方式:
<bean id="autoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator" dependency-check="none">
		<property name="proxyTargetClass">
			<value>true</value>
		</property>
		<property name="interceptorNames">
			<list>
				<value>transactionInterceptor</value>
			</list>
		</property>
		<property name="beanNames">
			<list>				<value>com.wqh.action.XinfangNewsAction</value>
			</list>
		</property>
	</bean>

直接用完整类名进行AOP。这样不需要在Spring中配置XinfangNewsAction的bean也可以使用声明性事务。
我不是不同意robbin的不要给Action配transaction的建议。只是发现其实webwork autowire以后其还是可以使用Spring AOP进行声明性事务,哈哈。
0 请登录后投票
   发表时间:2006-02-18  
对于ww和spring 的问题,我看最理想的状态就是ww扩展一个ww自己专用的 spring xmlHandler,在spring的xml中:

&lt;ww:action name="XXXX" class="asdasd"&gt;
     &lt;bean XXXXX/&gt;
&lt;/ww:action&gt;
0 请登录后投票
   发表时间:2007-07-06  
robbin 写道
lingcm 写道
robbin 写道


为什么要用spring去配置webwork的action呢?


使用spring配置webwork的action可以很方便的将action里面要用到的service直接注入进去。 就这一点就可以让我换成spring管理action了,不知道robbin现在是怎样在action里面获取service的呢?


看来你还不知道有更简单的用法:

在webwork.properties中加入如下配置内容
webwork.objectFactory=spring

然后就OK了!

Action需要什么Service,定义一个set方法,就自动拿到了。


我现在就是这么做的,很方便,但我还有一点不清楚,那我的service中,如果要注入dao,该怎么配啊?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics