2017-03-21 21:56
我刚测试了一下,是绝对可以的,你在本地测试一下下面的代码:
import com.jfinal.plugin.cron4j.Cron4jPlugin;
import com.jfinal.plugin.cron4j.ITask;
public class Test {
public static void main(String[] args) {
new Cron4jPlugin().addTask("* * * * *", new ITask() {
public void run() {
System.out.println("运行");
}
public void stop() {
System.out.println("停止");
}
}).start();
try {
System.out.println("主线程睡眠");
Thread.currentThread().sleep(99999999);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
2017-03-21 21:51
使用拦截器支持事务时,不要将内部的异常吃掉,所以 try catch 中需要将异常再次抛出来,这个可能是在你的代码中没有支持事务的根本原因
此外,还要注意 mysql 只有 innodb 引擎才支持事务,myisam 天然不支持事务,还要注意事务级别是否匹配当前的数据库操作,如果是 jfinal 3.0 版本,默认级别比较高,一般不需要调整
最后,上面的代码中,既然 savePay 中已经使用了 @Before 声明了事务,那么在 enhance 时就不需要添加 Tx.class 这个参数了
最后的最后,个人一般建议直接使用 Db.tx(...) 的方式支持事务,控制起来更加方便,例如,可以 try catch,然后在 catch 中 return false 就可以控制事务回滚了,然后通过得到 Db.tx(...) 方法的返回值再控制对上层响应什么返回值会更方便
2017-03-21 16:34
@zhaozhihong sql 中最后的分号去掉没有,注意将 sql 彻底改造成 JDBC 支持的格式
2017-03-20 21:03
@广州雨人 参考一下这些博文:https://www.oschina.net/search?scope=blog&q=jfinal%20dubbo
2017-03-20 19:33
有了对比,才会在认知上更有深度,spring 由于过于繁琐庞大、过度设计、配置文件满天飞,所以才会出现 spring boot 这个项目给 spring 做简化工作,而 spring boot 中的很多功能 jfinal 早在五年前就有了,例如零配置、java config 这类概念、热加载,减少代码量等等设计目标
spring boot 本质上是在重走 jfinal 五年之前就开始走的路,但是 spring boot 底层仍然基于 spring 这个庞然大物,开发者看到的仅是浮出海面的冰山,而隐藏在海水之下的山体才是更大的麻烦,所以很多 spring boot 用户在开发过程中会不断要去学习 spring 有关的概念
jfinal 是极简设计,学习成本极低,WEB MVC + ORM + Template Engine 所有功能仅有 400K 左右的 jar 包,比 spring 体系要小得多,所以无论大家是否想用 jfinal 开发,掌握 jfinal 都是很容易并且值得的