关于playframework1.2.4 static 关键字使用的一些思考
在Play1.2.4中Controller中的方法需要static修饰符号才能成为一个Action。 所以像获取pageNum和searchword参数时只能够在Action中定义临时变量来存储参数。这样必然会存在大量重复的代码,比如像下面两个Action中就存在重复的代码。
有n多次我想把这几个变量定义到BaseController中去,然后在Action中直接使用,但没有成功。
这几个变量应当为Controller的私有属性,不能使用static关键字进行修饰,但是Action又是使用static进行修饰的,没法操作私有属性。
为什么这几个变量不能使用static进行修饰?
虽然使用static进行修饰之后程序看似似乎没有任何的问题。但实质上会存在线程安全问题,A看到搜索的结果可能是由B输入的关键词搜索的结果,所以万万是不能使用static修饰Controller的私有属性的。 当然可以使用ThreadLocal来包装这些变量使得程序变得线程安全,但是这样的使用方式未免代价太大。
好在Play在之后的版本没有使用static修饰Action ,这应该可以让Controller变得更加灵活。
转载于:https://my.oschina.net/qidis/blog/2395811