JFinal 简介
JFinal 是基于Java语言的极速 WEB + ORM 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。
JFinal框架是基于Java语言的开源Web框架,由中国著名的Java开发者陈梁发起并持续开发维护。它借鉴了Struts、Hibernate等框架的优点,采用了极简的API设计,使得开发者能够更加便捷地进行Web应用的开发工作。JFinal框架在国内外都有着广泛的应用,尤其在企业级应用和中小型项目中备受青睐。
特点
1.MVC 架构,设计精巧,使用简单
2.遵循 COC 原则,零配置,无 xml
3.独创 Db + Record 模式,灵活便利
4.ActiveRecord 支持,使数据库开发极致快速
5.自动加载修改后的 java 文件,开发过程中无需重启 web server
6.AOP 支持,拦截器配置灵活,功能强大
7.Plugin 体系结构,扩展性强
8.多视图支持,支持 FreeMarker、JSP、Velocity
9.强大的 Validator 后端校验功能
10.功能齐全,拥有 struts2 绝大部分核心功能
11.体积小仅 303K,且无第三方依赖
对比
JFinal ORM和Hibernate简要对比
JFinal采用ActiveRecord实现数据库操作支持,较Hibernate开发效率提升六到十倍。
JFinal ActiveRecord较Hibernate学习成本低,一小时内能上手开发。
JFinal零配置,对数据库支持五个无特点:无xml、无annotation、无getter、无setter、无attribute,极大降低了代码量,统计证实代码量节省70%到95%。
JFinal数据库操作完全采用原生sql,相对Hibernate采用的HQL学习成本低,功能更强大,性能更高,稳定性好。
JFinal 和SpringBoot简要对比
主要区别在于它们的设计理念、功能集成方式和目标用户群体。
设计理念、功能集成方式:
JFinal 是一个轻量级的MVC+ORM集成框架,设计目标是快速开发、代码量少、学习简单。它遵循“约定优于配置”的原则,支持零配置,无需XML配置文件,使得开发过程更加简洁和高效。
Spring Boot 则是一个自动化集成配置工具,旨在简化Spring程序的创建和开发过程。它通过提供大量的默认配置和开箱即用的特性,如内嵌的Servlet容器和自动配置Spring容器,使得开发者能够快速搭建和部署应用程序。Spring Boot还支持将Spring的各种框架(springframework, spring-mvc, spring-security等)集成起来进行自动化配置,适合需要集成多种Spring框架的企业级应用。
目标用户群体:
JFinal适合小型项目或快速开发需求,因为它提供了轻量级和快速的解决方案。
Spring Boot则更适合大型企业级应用,因为它提供了全面的生产就绪型功能和强大的服务体系,如嵌入式服务器、安全、性能指标、健康检查等。
JFinal创建项目
Maven项目
创建 Maven 项目时选择 "Create a simple project" 和不选有所不同。选择 "Create a simple project" 时,Maven 会创建一个没有任何特定构建配置的简单项目,通常用于快速开始一个没有复杂依赖和配置的项目。不选的话,Maven 会创建一个标准的 Maven 项目,包含标准的项目结构和 pom.xml 文件,你可以根据需要添加更多配置和依赖。
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal-undertow</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal</artifactId>
<version>5.1.0</version>
</dependency>
public class Config extends JFinalConfig {
@Override
public void configConstant(Constants me) {
//是否开启开发模式
me.setDevMode(true);
}
@Override
public void configRoute(Routes me) {
// 路由扫描,jfinal 4.9.03 新增功能。参数 "com.xxx." 表示扫描被限定的包名
// 扫描仅会在该包以及该包的子包下进行
me.scan("com.w.contrller");
}
@Override
public void configEngine(Engine me) {
}
@Override
public void configPlugin(Plugins me) {
}
@Override
public void configInterceptor(Interceptors me) {
}
@Override
public void configHandler(Handlers me) {
}
}
新建Config文件需要继承JFinalConfig 并重写方法
configConstant(Constants me): 配置常量
configRoute(Routes me): 配置路由
configEngine(Engine me): 配置模板引擎
configPlugin(Plugins me): 配置插件
configInterceptor(Interceptors me): 配置拦截器
configHandler(Handlers me): 配置 Handler
新建com.w.controller再创建demoController01继承Controller
@Path("/test")
public class demoController01 extends Controller {
//控制器的默认访问方法,相当于Struts的execute
public void index(){
renderText("test");
}
//普通方法
public void test01(){
renderText("test01");
}
//单独访问方法
@ActionKey("/test001")
public void test001(){
renderText("test001");
}
}
访问localhost/test 默认调用index()方法,localhost/test/test01 调用test01()方法,
localhost/test001 调用test001()方法
新建com.w.run下创建Run类里面创建demoRun方法:
public class demoRun {
public static void main(String[] args) {
//加载的类 端口号 是否支持热加载
UndertowServer.start(Config.class,80,true);
}
}
运行程序 demoRun页面 Run As Java Application
传统非Maven项目
1.1 创建项目
此处的 Default out folder 必须要与 WebRoot\WEB-INF\classes 目录完全一致才可 以使用 JFinal 集成的 Jetty 来启动项目。
1.2 放入jar包
将 jfinal-xxx.jar 与jetty-server-8.1.8.jar 拷贝至项目 WEB-INF\lib 下
1.3 修改web.xml
添加内容到 web.xml
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>demo.DemoConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
1.4 创建配置文件及控制器
在项目 src 目录下创建 demo 包,并在 demo 包下创建 DemoConfig 文件
DemoConfig.java 文件所在的包以及自身文件名必须与 web.xml 中的 param-value 标 签内的配置相一致(在本例中该配置为 demo.DemoConfig)。
public class DemoConfig extends JFinalConfig {
public void configConstant(Constants me)
{
me.setDevMode(true);
}
public void configRoute(Routes me)
{ me.add("/hello",
HelloController.class);
}
public void configPlugin(Plugins me) {}
public void configInterceptor(Interceptors me) {}
public void configHandler(Handlers me) {}
}
在 demo 包下创建 HelloController 类文件
public class HelloController extends Controller {
public void index()
{ renderText("Hello JFinal
World.");
}
1.5 启动项目
在 Main class 输入框中填入com.jfinal.core.JFinal 并点击 Debug 按钮启动项目
浏览器输入 localhost/hello,输出内容为 Hello JFinal World 即启动成功