波总,能否提供一个结构清晰的Demo,目前有一点困惑,总感觉有点乱:1受传统Spring框架的影响,总感觉用JFinal不知怎么分层写更合理,更优雅清晰,还有事务的控制,在Action层控制还是用其他的方式比如enhance()等更好?
1:M 层用 jfinal 2.2 生成,model 中不要使用 static Xxx dao 这样的对象,避免新手误用,model 中只放一些与字段状态相关的方法,例如 User 这个 model 你可以针对 status 字段,放一个 public boolean isStatusOk() 这样的方法
2:V 层就是展现层,尽可能只去展现数据,避免复杂逻辑
3:C 是控制层,只负责得到前端参数,转调业务层,render。避免写业务逻辑,绝不可写数据库查询之类的代码
4:最最核心是 S 业务层,基本上来说, 95% 以上的代码要写在这里,只要是对数据库的操作代码也全部写在这里。如果业务层以外需要操作数据库,那么也要先在业务层去创建方法,然后再让业务层以外去转调这个业务层代码,这样可实现尽可能大的代码重用
5:事务控制,我个人习惯于使用 Db.tx(...) 来做,如果要用拦截器,建议使用业务层拦截器,控制层坚持只做我前面 3 中所说的事情
6:只在需要的时候使用接口、抽象类,业务层在绝大部分情况下不需要使用接口,直接是 XxxService.java 就可以了
jfinal 社区官网再完善一段时间会抽取出里面比较通用的功能开放出来,多多关注社区动态