2018-08-30 23:12
@nbjgl 在 configPlugin 中的最后,手动调用一下 arp.start() 这样就可以立即启动 ActiveRecordPlugin 了
然后就可以直接 Db.update(...) 了
2018-08-30 22:17
@libofei getModel 得会用,看一下 jfinal demo 中怎么用的,一定要注意前缀:
name="blog.title"
name="blog.content"
上面的 blog 这个前缀,正好是 getModel 第一个参数 “Blog" 的第一个字母变小写,就是 "blog"
你也可以打破上面的约定,手动指定:
getModel(Blog.class, "otherName")
以上就指定了 "otherName" 作为前缀,这个时候,在页面就可以这样:
name="otherName.title"
name="otherName.content"
2018-08-30 12:01
@a614784512 jfinal 官方是不玩路由扫描的,有很多潜在的缺点。 例如,如果支持扫描,那第三方 jar 中完全可以扔一个注解进去让你扫描,从而轻松接管你的项目
spring boot 这类路由扫描是有巨大安全隐患的,spring boot 这类项目通常依赖的 jar 包非常多,这些 jar 包中可以轻轻松松放个注解让你扫描,人家就可以通过这个路径干任何事情了
还有性能方面等等各种缺点,就不一一细说了,光是安全性就够规模稍大的公司引起重视了
2018-08-30 11:57
影响最大的是,当你使用 tomcat 的 shutdown.sh shutdown.bat 这两个命令关闭 tomcat 时, tomcat 始终无法关闭,因为还有线程存活
这时你只有通过 kill 命令或者在 windows 系统中通过强制退出才能真正关闭 tomcat
至今仍有很多人在使用 kill 命令关闭 tomcat ,这样是很危险的,例如 jfinal 就有 public void beforeJFinalStop() 这类回调方法会在 tomcat 关闭前被回调,kill 关闭 tomcat 就会跳过这类操作
此外,用户自己在创建 Timer 这类定时器线程时,也存在这样的问题,在 tomcat 无法被正常 shutdown 时多注意守护线程这件事