JFinal 3.5 发布,将能上的菜先上了

栏目: Java · 发布时间: 6年前

内容简介:jfinal 新功能经过 6 个月的酝酿、开发,在大幅度的创新来临之前,jfinal 3.5 这一版先稳一稳,趁着国庆长假,将能上的菜先上了。jfinal 3.5 这一版针对这 6 个月以来用户反馈最强烈、最频繁的需求进行了开发,同时对原有代码进行了极其精致的优化与打磨。jfinal 3.5 诸多内部优化值得升级使用,诸多基础性调整为下一步进化做好准备。

jfinal 新功能经过 6 个月的酝酿、开发,在大幅度的创新来临之前,jfinal 3.5 这一版先稳一稳,趁着国庆长假,将能上的菜先上了。

jfinal 3.5 这一版针对这 6 个月以来用户反馈最强烈、最频繁的需求进行了开发,同时对原有代码进行了极其精致的优化与打磨。

jfinal 3.5 诸多内部优化值得升级使用,诸多基础性调整为下一步进化做好准备。

1、Controller 依赖注入

jfinal 3.5 添加了 Controller 依赖注入功能,使用前需要配置启用该功能:

public void configConstant(Constants me) {
    me.setInjectDependency(true);
}

然后在 Controller 中只需对属性使用 @Inject 注解即可:

public class MyController extends Controller {

    @Inject
    Service service;

    public void index() {
        service.justDoIt();
    }
}

添加该功能主要目标是为了自动化触发业务层 AOP 与进一步减少代码量,如上代码中的 Service 中使用的 @Before 配置的拦截器会自动生效,而老版本需要手动 enhance 一次。

2、Interceptor 依赖注入

@Inject 还可以向拦截器属性注入依赖对象,用法与 Controller 之中完全一样:

public class MyInterceptor implements Interceptor {

    @Inject
    Service service;

    public void intercept(Invocation inv) {
        service.justDoIt();
    }
}

jfinal 依赖注入功能与 spring 有着本质的不同,jfinal 依赖注入的核心目标是为了实现 AOP 自动化与节省代码量,而且与 IOC 毫无关系,更不需要 IOC 容器。极简设计,实现该功能只用了 243 行代码。

3、Aop 任意时空支持 AOP 及 Inject

jfinal 3.5 添加了 Aop 工具类用来全面取代老版本中的 Enhancer,可在任意地方通过 Aop.get(…) 方法创建 AOP 代理对象,实现 AOP 功能的同时进行依赖注入:

Service service = Aop.get(Service.class);

以上代码会创建 Service 对象,如果 Service 中使用了 @Before 配置过拦截器将会自动生效,如果 Service 中的属性使用了 @Inject,则会被注入依赖对象。还可通过  Aop.inject(...) 方法来注入依赖对象:

Service service = new Service();
service = Aop.inject(service);

以上代码会为 service 中的 @Inject 属性注入依赖对象 ,Aop.inject(...) 方法相对于 Aop.get(...) 少一个对象创建过程。Aop 可以在 Controller、Interceptor 之外快捷使用 AOP、Inject 功能。

4、主干版本加入 action 参数注入功能

由于老版本照顾了 java 1.6、1.7 用户编译级别为 1.6,action 参数注入功能做到了 jfinal-java8 分支版本之中。 jfinal 3.5 最低要求 JDK 1.8,  action 参数注入功能自然也就做到了主干之中:

public class LoginController extends Controller {
    public void index(String userName, String password) {
        Ret ret = service.login(userName, password);
        renderJson(ret);
    }
}

以上 index() 这个 action 被注入了 userName、password 形参,省去了对 getPara、getFile 系列方法的调用代码,将进一步提升开发效率。该功能还支持 File、Model、RawData、Date 等常用类型,还可以通过扩展 IParaGetter 接口实现注入任意类型的数据。本功能由 @玛雅牛 大神贡献,再次感谢 @玛雅牛。

5、jetty server 模块升级为 2018.11 版本

jetty server 模块升级到 jetty 最新版 9.4.12.v20180830, 由于是 java 8 起步,用户可自由升级 jetty 到未来的更高版本。升级后的 jetty server 支持所有版本的 eclipse,支持 IDEA 热加载,并且统一 eclipse、IDEA 启动参数:

JFinal.start("src/main/webapp", 80, "/", 5);

老版本 jetty server 无法在部分高版本 eclipse 中使用,无法在 IDEA 下支持热加载,jetty server 最新版 maven 坐标如下:

<dependency>
    <groupId>com.jfinal</groupId>
    <artifactId>jetty-server</artifactId>
    <version>2018.11</version>
</dependency>

6、NotAction 注解

NotAction 注解用于 Controller 上原本为 action 的方法之上,可以强制该方法不成为 action:

public abstract class BaseController extends Controller
    
    @NotAction
    public void getLoginUser() {
        ......
    }
}

以上代码中的 getLoginUser() 将不会成为 action,不会生成访问路由,老版本中的 @Before(NotAction.class) 可改用 @NotAction 注解实现。

7、Controller 添加 getRawData()

getRawData() 便于接收客户端发送过来的 json 或者 xml 数据:

public void index() {
    String jsonStr = getRawData();
    User user = FastJson.getJson().parse(jsonStr, User.class);
}

getRawData() 有助于提升 API 型项目的开发体验,在减少代码的同时进一步提升开发效率。

8、Controller 添加 getKv()

getKv() 将表单参数封装成 Kv/HashMap 对象,方便使用其中的一些 工具 方法:

public void index() {
    renderJson(getKv());
}

9、enjoy 模板支持自定义 Field表达式

如下代码将支持 object.field 表达式访问  isField() 方法:

Engine.addFieldGetterToLast(new FieldGetters.IsMethodFieldGetter());

通过扩展 IFieldGetter 接口,可以自由定制 object.field 表达式的获取方式。

10、改进 ClassPathSource

解决 URL.openConnection() 在 linux 下打开文件句柄不能及时关闭的问题。

上述是一些看得到、感知得到的增强与改进,此外还有超过 50 项的内部优化、打磨是看不到的,后续会在 changelog 中整理出来。精益求精的 jfinal 3.5 版本,值得你升级。

One More Thing:

近几天俱乐部将会在线直播讲解 jfinal 3.5 与 club 1.6 的新功能与新用法。与 jfinal 3.5 一同发布的还有俱乐部专享项目 jfinal club 1.6,该项目提供一套极简的权限管理以及内容管理后台,截图与功能介绍猛击  传送门 ,现在就加入俱乐部获取专享福利: http://www.jfinal.com/club


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

构建高可用Linux服务器

构建高可用Linux服务器

余洪春 / 机械工业出版社华章公司 / 2011-11-1 / 79.00元

资深Linux/Unix系统管理专家兼架构师多年一线工作经验结晶,51CTO和ChinaUnix等知名社区联袂推荐。结合实际生产环境,从Linux虚拟化、集群、服务器故障诊断与排除、系统安全性等多角度阐述构建高可用Linux服务器的最佳实践。本书实践性非常强,包含大量企业级的应用案例及相应的解决方案,读者可以直接用这些方案解决在实际工作中遇到的问题。 全书一共10章。第1章以作者的项目实践为......一起来看看 《构建高可用Linux服务器》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码