开发者社区 问答 正文

1:Jfinal中的微内核到底是什么意思,体现在哪里 2:API引导式配置的优点?400报错

1:Jfinal中的微内核到底是什么意思,体现在哪里 2:API引导式配置的优点和缺点是什么?? 400 报错

@JFinal 你好,想跟你请教个问题:个人感觉api引导式配置一堆代码配置反而程序员还要花时间去读,没有xml配置文件来的直观,维护起来还需要改代码,而改代码比改配置文件更加容易出错

展开
收起
爱吃鱼的程序员 2020-06-03 13:10:58 588 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    内核是1指最基本最核心的基础模块部分,微内核具有概念极少、通用性极强、代码量极少的特征。

    内核要做到"微"极端困难。微内核必定是建立在一个极端高明的抽象之上。第一个难点在于抽象的普适性,一个框架提出或主张一套概念,如果这个抽象概念体系能够涵盖尽可能广泛普遍的需求与场景,才能说具有普适性。从某种意义上讲,普适性也就是 "完备性"。

    第二个难点在于抽象概念数量的极少化。例如某套抽象概念具有普适性,但却使用了 100 个概念去描述我们所面对的真实世界。这显然会增加学习成本,降低用户体验。抽象的普适性与极小化缺一不可。

    具体到 jfinal 项目,核心只使用了 Controller、Model、Render、Interceptor、Handler、Plugin这六个概念,但却可以满足无限的需求场景,在保障了概念极小化的同时,具有极高的普适性。这六个抽象概念,删掉任何一个都不可以,添加新概念就显得多余(Plugin已经涵盖了大粒度类型的无穷扩展性)。这也是 "大道至简"、"少即是多" 的美妙诠释。

    回过头去看一些其它框架,例如一个 AOP 的实现,用到的概念通常有:Aspect、 Advice、 Joinpoint、 Poincut、Introduction、Weaving、Around 等等,而 jfinal 用 Interceptor 这个概念就打完收工了。

    JFinal 的 API 引导式配置,是指用 api 调用的形式进行配置,但并不是说将配置写死在程序中,例如看下面的例子:

    public void configConstant(Constants me) {
      boolean devMode = PropKit.getBoolean("devMode");
      me.setDevMode(devMode);
    }

    上例中的devMode 配置的值是从外部配置文件中加载进来的,并不是写死在程序中的,而这个外部配置文件,你可以采用你自己喜欢的方式,例如 jfinal 提供的 PropKit 工具加载 key=value形式的配置,也可以使用自己心爱的 xml 配置方式,自主定义配置格式。强调一下:API 引导式配置与配置写死在程序中毫无关系可言。

    上例中API 引导配置部分是指 me.setDevMode(...) 这个方法,之所以称之为引导式配置,是指当你输入 "me." 这三个字符时,IDE 的代码提示会引导你有哪些可以用于配置的方法,而且方法上面有注释说明配置的含义。除了注释上有说明,方法名称以及方法参数名也在告诉你这个参数的意义。

    总的来说 API 引导式配置的目的就是降低学习成本、提升开发效率,但同时也极度自由化地兼顾了外部XML、properties 配置。

    通过这种方式就不仅可以降学习成本,而且也可以避免手误输错配置项。上面的例子表明,jfinal 引导式配置不是说将配置写在代码中,上例中的 devMode 这个值是从外部配置文件中得到的。

    ######说下我的理解。jfinal作为框架,用代码来配置没问题的。而你说的也对,那么其实只要你在你的代码中留出给xml配置的 必要接口就可以了。一个项目哪用得框架级那么细致的配置,基本上大方向能配就可以了。######微内核指jar包小,依赖少。API 引导式配置有代码提示,xml写好dtd也有提示,缺点就是不直观,写在properties文件里,没有上下文,只有一个key-value。不知道哪个类要用到这个配置。把jfinalconfig这个类里面的每个方法都做成一个spring的bean######

    微内核就是jfinal2.2核心包300k.

    你看看其他框架300k能够么。

    ######

    微 就是小,

    jfinal 只是在web开发过程中,封装了MVC,数据库操作等必须功能,相对原来传统的spring,更简单,拓展性更强,相对spring等框架的过度设计,代码简洁明了;

    在jfinal的插件基础上,你可以继续封装适合自己的业务框架,实现你自己所为的xml配置开发。

    研究jfinal 参考设计模式之后 ,对自己的代码功底很有帮助。

    ######你们有看过jfinal的源码吗?
    2020-06-03 13:43:45
    赞同 展开评论