JFinal声明式事物问题

Caio_zcy 发布于 2014/11/21 17:57
阅读 257
收藏 3

@JFinal 你好,想跟你请教个问题:

詹总,我想请问一下,为什么JFinal的声明式事物定位在Controller级别。接触JFinal之前我是SSH的忠实使用者,一般都会把事物横切在Service层的逻辑处理方法中,JFinal为什么不这样?或者说提供Model里面的方法级别事物,因为Model采用的充血模式,本身可以处理逻辑的。

加载中
0
台俊峰
台俊峰
我猜可能是实现起来太复杂了吧,这样的话jfinal就得像spring一样可以属性注入,通过反射和动态代理实现。坐等波总来解答!
JFinal
JFinal
不复杂,只不过开发者在用的时候很麻烦,要写配置文件对切面进行声明,还要对依赖进行装配,极大提升了代码量,拉低了开发效率
0
JFinal
JFinal

    声明式事务通常用 AOP 来实现,而实现 AOP 通常需要 IOC + 配置若干,这种 AOP 无法满足 JFinal 极速开发的设计目标,所以 JFinal 采用了现在的 Interceptor 来实现 AOP。

   JFinal 的 Interceptor 的不需要 IOC,也不需要 XML 配置,是 JFinal 内置的极简实现,只能用于与之配套的 Controller,所以无法在 Service 层做 AOP。 

    AOP 是一种设计方法,本质上是为了将切面代码与业务代码独立出来,业务代码无需知道切面代码的存在,既然业务无需知道切面的存在,又何必知道切面是应用在在业务层之上还是控制层之上?应用在业务层之上唯一的好处可能是让切面晚些切入提升点性能。

    当然,如果未来 JFinal 有办法实现一个任意层面的 AOP,并且是极简的实现,那肯定会推出,非极简设计不考虑。

返回顶部
顶部