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 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:22
@Dreamlu 写的代码,值得信赖,JFinal event 设计简洁,是 jfinal 风格,值得拥有
2020-04-01 16:17
@zzutligang 认真建立业务层,在前期看似多费点时间,实质是最省时间的
不要在 controller 中写业务逻辑,更不要在 controller 中写 sql 代码