2016-08-22 21:48

re 是方法内部的局部变量,每次 sychronized 的时候都是针对的独立的创建的对象,是没有任何意义的。建议你好好学习一下 java 的多线程基础知识

2016-08-22 16:30

@南湖畔 感谢你的支持,头像换一换哈,支持下社区发展

2016-08-22 16:03

第一个建议中,在需要照顾到打破约定的路由规则时,就需要再引入别的办法来解决,而且 jfinal 的现在的路由在满足你的建议方面有如下两点:
1:可以自己写个工具类实现,很容易地去除掉 me.add(...) 这行代码
2:即便是有 me.add(...) 这行代码,只不过是每一个 Controller 需要配置一行而已,有些 controller 中或许有几十个 action,相当于几十个路由,但配置只有一行代码,所以这个与传统的路由配置在工作量上是有本质区别的

2:getPara(paraName) 就可以获取到问号挂参的参数,文档中有说明,而 getPara(int) 获取的才是 urlPara

2016-08-22 15:54

@Dreamlu 不着急,社区的关系链成熟以后,@你的人就多了

2016-08-22 15:51

社区添加 "点赞" 功能后,给你 1024 个赞

2016-08-22 15:49

你终于回来分享了,好友没见你来逛逛 jfinal 社区了,有空多来走走啊 ^_^

2016-08-22 15:47

再补充一下第一点,在现有的 jfinal 路由设计之上,其实只需要写一个工具类就可以将 me.add(...) 去掉了,这个已经有很多人在这么使用了:me.add(AutoRoutes())

2016-08-22 15:46

第二个建议,"p1=xx-p2=yy-p3=zz"这种参数本身用问号挂参就可以了,例如:localhost/article?p1=xx&p2=yy&p3=zz,而 jfinal "xx-yy-zz" 的参数本身就是为了支持更加简短的 url 而设计的。感谢你的反馈,如果觉得有什么还太方便的地方,多多反馈哈

2016-08-22 15:44

楼主的第一个建议,jfinal 基本上是采用的这种方式,只不过对于每一个 controller 要进行一下类似注册的操作:me.add(controllerKey, controllerClass, viewPath),最后生成的路由与类主所说的是一致的:"/controllerKey/method/parameters",可能楼主是希望在此基础之上,连 me.add(...) 这个操作都去掉之。这个确实很容易去掉,只不过,去掉以后,需要引入额外的概念去完善所缺失的功能,例如,用户希望路由的 controllerKey 是随意变的,有时候不希望与约定一致,而且注册相对于扫描反射的方式更加安全,因为扫描的时候可能会扫描到第三方 jar 中的controller

2016-08-22 15:24

@Javen 回复发贴人的时候,不需要 @对方, 对方就可以收到 @ 消息的,感谢支持

2016-08-22 11:58

@yuan_123 你只要记住:控制多线程不能同时进入一个方法,只能一个一个进入同一个方法,必须保证这些个线程是作用在同一个对象之上

2016-08-22 11:39

你这个对象是放在哪里的?如果是在 controller 中,可以将其声明我 static 的:
private static MySerivce myService = new MySerivce();
然后在 controller 中使用这个 myService 的时候就是共享的同一个对象了, synchronized 就有效了

2016-08-22 11:37

@yuan_123 对,但一般不是工具类方法都不用 static 方法。只要保障多线程都在使用的在这同一个对象调用该方法就可以,不一定要使用 static 方法

2016-08-22 11:32

补充一下,"非 static" synchronized 方法,如果想让其有效,就必须保证多线程都在在同一个对象实例上调用的该方法,而不是 new 出不同的对象去调用该方法

2016-08-22 11:28

如果你在此类之上创建了多个对象,即便这个类上的方法用了 synchronized 也是没用的,因为 synchronized 是针对对象。如果要针对类级需要将方法声明为 static,这个是 java 基础,此外,你的昵称里面带有 @ 字符,所以 at 不到你,我帮你将 @ 改为下划线可否?