2020-04-01 17:38

@Code_Cat 1.8 都好多年历史了,比 1.7 肯定是要稳定得多

升级 JDK 其实就是解压 JDK 1.8, 然后在环境变量的配置中改个目录而已,不能再简单方便了

而且 jdk 1.8 的性能比 1.7 要好很多

2020-04-01 17:37

这个分享很实用,日志按日期划分便于查看与管理,将来写脚本来分析也很方便

2020-04-01 17:36

估计你的 _layout.html 中全是一些 #define 定义的函数,但没有在任何地方调用过它们,自然就不显示任何东西了

函数的定义与调用是两回事,定义不会触发调用

你的代码 render _layout.html , 一般不会这么用, _layout.html 一般是让 #include 进来,或者 engine.addSharedFunction(...) 进来的

你没有给出任何 _layout.html 中的东西,只能帮你猜到这里了

以后如果你问问题还是需要让人去猜你在说什么的话,建议不要再问了,遵重回答者

2020-04-01 17:30

@杜福忠 他是在类里头写的,不是在方法里头写的,必然出错了

2020-04-01 17:30

enjoy 模板的热加载是自动的,与编译啥的都无关

java 代码的热加载,如果在 IDEA 之下,可以安装一个 jrebel 插件

2020-04-01 17:23

@杜福忠 这个方法可以的

还有一个办法是:
engine.removeSharedObject("siteinfo");
engine.addSharedObject("siteinfo", Siteinfo.dao.findFirst("select * from siteinfo");

较新的 jfinal 版本添加了 Engine.removeSharedObject 方法,便于动态调整共享变量

2020-04-01 17:20

@xheeex https://jfinal.com/share/2023 这个地方明明是错误的,而且肯定也不是官方的例子,官方的例子都在文档之中:
https://jfinal.com/doc

2020-04-01 17:18

@杜福忠 极其详细,非常感谢

2020-04-01 17:16

@mrbai2018 我看到你的项目除了 config 以外,还弄了个 conf 目录

加载自建的目录下的配置,只需要在 jfinal.sh 中的环境变量 CP 中继续添加即可,例如:
CP=${APP_BASE_PATH}/config:${APP_BASE_PATH}/lib/*
改成
CP=${APP_BASE_PATH}/config:${APP_BASE_PATH}/lib/*:${APP_BASE_PATH}/conf

极度方便

我想起来 @山东小木 问过是否能加载打包后自建的 classes 目录下面的 .class 文件,原理是一样的,这样配置:

CP=${APP_BASE_PATH}/config:${APP_BASE_PATH}/lib/*:${APP_BASE_PATH}/classes

也就是说 CLASSPATH 下面除了可以放配置文件以外,还可以放 .class 文件被加载,但要注意 jar 包中如果出现同名 .class 后的优先级问题

如果优先级不能满足,在打包时过滤掉那些 .class 文件不打到 jar 包中去

2020-04-01 17:11

@mrbai2018

2020-04-01 17:09

如果不是用 jfinal 官网推荐的几种方式启动、开发,直接用上你原先的 java web 开发经验就可以,注意这里的声明:
https://jfinal.com/doc/1-11

2020-04-01 17:08

jfinal 数据库部分,在底层是直接扔给 JDBC 的, jfinal 只做了一层极薄封装,出错的概率太低了,而且 jfinal db 部分已经用了 9 年多了,十分可靠

2020-04-01 17:07

13 年的时候,用 jfinal 做的一个 deal analyzer,每天数据量超过 1 千万条,相当稳定

如果你用到 Db.batch 系的方法,注意 batchSize 值不要太大,否则会在超出数据库某个值的时候自动提交,这样在回滚事务的时候,那些被提交的数据就不能回滚了

我一般设置在 5000 以内

我看到你用了 on duplicate key up,那么你得注意是不是数据没有丢失,只是数据存在时没有 insert 而只是进行了 update。

此外,据说 on duplicate key up 有坑,你再多了解一下

2020-04-01 16:55

这样的话,既保障了基本配置的默认配置,又可以在外部任意覆盖这些配置

总之,注意不要让 jar 包与 config 目录下出现同名配置就好,因为同名文件只会有一个生效,并且只有 jar 内的生效