jfinal中如何保证无状态的

写下带不走的风 发布于 2015/07/29 14:58
阅读 337
收藏 1

最近看python里有threadLocal,然后想到了以前hibernate框架和spring框架里面也用到了这个东西,为了保证“无状态”。然后看jfinl的源码,发现db那块处理用到了threadLocal,但是,如何保证一个controller对象里面成员变量是无状态的呢?例如controller里面有一个List的成员变量。

这种问题以前用spring的时候会配置单例模式,那样就变成无状态的了。jfinal是如何实现的呢?请教@jFinal

加载中
0
JFinal
JFinal
    jfinal 的 controller 对于每个请求都使用的单独对象,所以是线程安全的
JFinal
JFinal
回复 @laigous : 这里有很详细的计算,很划算:http://www.oschina.net/question/197668_221395
laigous
laigous
每一次请求都会new一个controller?这样不是很浪费么~
1
糊搞
每次WEB请求,JFinal都会new一个Invacation来处理(线程方式),Invacation会New一个controller出来,这样就保证controller是无状态的。
1
红薯的小黄瓜
红薯的小黄瓜
@jfinal 用jfinal也有一段的时间了,的确好用,不知道jfinal能否像springmvc一样,通过方法的形参将值注入进来,或者像Struts一样可以声明变量通过getPara来初始化。因为在写接口的时候,很多传过来的参数不在一张表里面,只能每个方法都用getPara来获取值,有10个参数,就的写10行getPara,而且每个接口都的写一遍,代码看起来有点乱
1
写下带不走的风
写下带不走的风

引用来自“JFinal”的评论

    jfinal 的 controller 对于每个请求都使用的单独对象,所以是线程安全的

恩,找到对应代码了

Controller controller = action.getControllerClass().newInstance();
controller.init(request, response, urlPara);

1
写下带不走的风
写下带不走的风
Controller controller = action.getControllerClass().newInstance();
controller.init(request, response, urlPara[0]);
0
0
JFinal
JFinal

引用来自“LAJS”的评论

@jfinal 用jfinal也有一段的时间了,的确好用,不知道jfinal能否像springmvc一样,通过方法的形参将值注入进来,或者像Struts一样可以声明变量通过getPara来初始化。因为在写接口的时候,很多传过来的参数不在一张表里面,只能每个方法都用getPara来获取值,有10个参数,就的写10行getPara,而且每个接口都的写一遍,代码看起来有点乱
可以使用 getModel 同时接收整张表的字段,详看一下手册中的例子,还有 jfinal demo 可以跑跑,下载地址 http://www.jfinal.com
0
红薯的小黄瓜
红薯的小黄瓜
恩 我明白,要是多个参数都不在一张表里,来自5张表里面的,比如省市县区镇这些,就算在一张表里面,getModel之后,不还是得用model.getStr来一个一个获取,还不如传5个参数过来,我说的是这样的例子@jfinal
JFinal
JFinal
五张表也没事,因为你可以调用五次 getModel:getModel(Aaa.class); getModel(Bbb.class)...
0
干死it
干死it
数据库很多表字段都是user_name,下划线的,而java代码里很多都是userName,请问怎么跟数据库对应啊?大家是用什么方法
JFinal
JFinal
数据库字段直接 userName 就很好,试试便知
返回顶部
顶部