说说你为什么不用JFinal?

说说你为什么不用JFinal?,第1张

原因有三点:

1、它没有给我带来便利, 并且找不到使用它的理由。

2、很难与其他主流框架进行整合。

3、过度封装并且使用它的同时我很难遵守代码规范。

先说说第一点, 对比spring系列, 并没有感觉它有多么便利, 创建一个Jfinal工程我需要1分钟, 创建一个Spring工程我也需要1分钟, 但是在实际开发时, Jfinal所消耗的时间会更多, 因为它不灵活。

并且代码比较啰嗦, 比如创建一个Controller, 我需要继承他的一个公共类, 并且需要在配置类里配置好它的路由, 并且需要在接口方法中使用getRequest方法。

JFinal WEB MVC和Struts简要对比:

JFinal遵循COC原则,零配置,无xml,而struts需要配置来支持action、result、interceptor配置与使用。

JFinal开发效率非常之高,相对Struts开发效率能提升五到十倍。

JFinal代码量非常省,相对Struts开发能省50%到70%代码量。

JFinal遵循Restful规范,而struts自身未提供Restful支持。Struts可以通过插件来支持restful,但支持不彻底使用不方便。

JFinal提供数据库支持,属于一站式解决方案,而struts仅为WEB MVC框架并未提供数据库支持。

JFinal学习成本极低,只需两个小时学习即可上手开发,而Struts学习成本相对较高。

JFinal相对Struts来说更加轻量级,JFinal打包jar文件仅173KB,而struts则为1.8MB。

JFinal ORM和Hibernate简要对比:

JFinal采用ActiveRecord实现数据库 *** 作支持,较Hibernate开发效率提升六到十倍。

JFinal ActiveRecord较Hibernate学习成本低,一小时内能上手开发。

JFinal零配置,对数据库支持五个无特点:无xml、无annotation、无getter、无setter、无attribute,极大降低了代码量,统计证实代码量节省70%到95%。

JFinal数据库 *** 作完全采用原生sql,相对Hibernate采用的HQL学习成本低,功能更强大,性能更高,稳定性好。

检查数据库服务器是否允许 代码服务器访问数据库

如果是本机, 检查连接地址, 账户, 密码

独立测试:

ActiveRecordPlugin可以独立于java web 环境运行在任何普通的java程序中,使用方式极度简单,相对于web项目只需要手动调用一下其start() 方法即可立即使用。以下是代码示例:

public class ActiveRecordTest {

  public static void main(String[] args) {

    DruidPlugin dp = new DruidPlugin("localhost", "userName", "password")

    ActiveRecordPlugin arp = new ActiveRecordPlugin(dp)

    arp.addMapping("blog", Blog.class)

    

    // 与 jfinal web 环境唯一的不同是要手动调用一次相关插件的start()方法

    dp.start()

    arp.start()

    

    // 通过上面简单的几行代码,即可立即开始使用

    new Blog().set("title", "title").set("content", "cxt text").save()

    Blog.dao.findById(123)

  }

}

*** 作日志, 也分粗细颗粒.

比如常见的 配置JFinal的Handler, 配置LogHandler的处理器,Handler可以接管所有web请求, 这里可以做粗颗粒的处理, 对每一个请求做入库处理, 如果访问量大时, 入库 *** 作做列队处理就可以了.

细颗粒的, 如在JAVA代码中的 Log log = Log.getLog("JAVA类描述或类名")

这个一般做入库的还是少, 毕竟已经有很成熟的日志分析查看工具了, 可以直接查文件了. 

如果业务需要做这个, 那也很简单:

1: 需要实现一个接口ILogFactory :

/**

 * JdkLogFactory.

 */

public class DbLogFactory implements ILogFactory {

public Log getLog(Class<?> clazz) {

return new DbLog(clazz)

}

public Log getLog(String name) {

return new DbLog(name)

}

}

2: DbLog 参考jfinal代码中 com.jfinal.log.Log4jLog  把这个类复制一下, 在每个方法中增加一个入库的 *** 作, 当然量大时, 入库 *** 作做列队处理就可以了.

3: 在JFinalConfig中:

@Override

public void configConstant(Constants me) {

        //先启动数据库

        ActiveRecordPlugin可以独立于java web 环境运行在任何普通的java程序中,使用方式极度简单,相对于web项目只需要手动调用一下其start() 方法即可立即使用。

        

        //设置为你的工厂 DbLogFactory

me.setLogFactory(new DbLogFactory())

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9918974.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存