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 内的生效

2020-04-01 16:54

如果希望留一部分配置文件在 jar 包内,一部分放在外部,然后用 appendIfExists(...) 来追加并覆盖的话

可以让 jar 包内只留其中的一个,另一个只留在打好包的 config 目录中,让 appendIfExists(...) 来读取

2020-04-01 16:52

当出现同名配置的时候,优先读 jar 内的

所以解决办法是在打包的时候过滤掉配置文件,不要打包到 jar 里面去,过滤的配置在 jfinal club 的 pom.xml 与 package.xml 中有的

2020-04-01 16:44

@心在流浪 使用 @Inject 注入的前提条件是,被注入的起点的创建或初始化是被 jfinal 接管的,下面三类组件据有这样的特征:
1:controller
2:interceptor
3:validator

所以,在上面三类组件中使用 @Inject 时,能被正确注入

此外,在上面三类组件中被 @Inject 注入的目标对象所形成的链条也能被正确注入,例如:
public class MyController extends Controller {
@Inject
Aaa aaa;
...
}

public class Aaa {
@Inject
Bbb
...
}

上面的例子中,在 MyController 中注入了 Aaa,而 Aaa 中已被注入了 Bbb,这种以 controller 为注入起点的注入链条是可以被注入的,并且可以被注入无限层

类似的在 Interceptor、Validator 中也可以像上面这样在链条中被注入

如果不满足上述条件,需要使用 Aop.get(...) 或者 Aop.inject(...) 进行处理,仍然十分便利

2020-04-01 16:24

按文档来一定可以的:https://jfinal.com/doc/1-2

2020-04-01 16:22

@Dreamlu 写的代码,值得信赖,JFinal event 设计简洁,是 jfinal 风格,值得拥有

2020-04-01 16:17

@zzutligang 认真建立业务层,在前期看似多费点时间,实质是最省时间的

不要在 controller 中写业务逻辑,更不要在 controller 中写 sql 代码

2020-04-01 16:15

直达事物本质,不留一点杂质,这是高手,点赞