内容简介:大家好, 我是老码农老罗。很高兴和大家分享 ActFramework 1.9 的发布新闻. 对于还不了解 ActFramework 的小伙伴, Act 是一款 Java Web 应用开发框架. 在开发体验, 表达力以及运行时性能等方面有很强的优势. 上周末...
大家好, 我是老 码农 老罗。很高兴和大家分享 ActFramework 1.9 的发布新闻.
对于还不了解 ActFramework 的小伙伴, Act 是一款 Java Web 应用开发框架. 在开发体验, 表达力以及运行时性能等方面有很强的优势. 上周末老码农刚刚做了 Act 的第一个分享直播, 录屏已登录 B 站: https://www.bilibili.com/video/BV1iK411n7iv/.
下面我们来看看 Act-1.9 带来了那些改进/修复:
1. 弃用 Java 7 并支持 Java8 ~ Java14
ActFramework 1.9 带来了 21 项改进/错误修复. 其中最主要变动是 支持 Java9 ~ Java14. 同时放弃对 Java7 的支持. 这项改进支持开发使用 Java9 以上的新语言特性以及 JDK 中的新方法. 同时还支持开发和部署环境的任意搭配, 意味着开发者可以自由地选择开发环境和部署环境:
- 使用 Java8 开发的应用可以部署到 Java8 以及 Java9+ 的环境中运行
- 使用 Java9+ 开发的应用可以部署到 Java8 以及 Java9+ 的环境中运行
2. 配置加载的改进
另一个较大改进在于配置文件的加载逻辑. 包括
详情请参见 issue 其中定义了如何实现远端服务器以及安全通信.
应用只需要定义一个提供一下方法的类:
public Map<String, Object> loadConfigurations();
并用 conf-loader
指定该类名即可. Act 将在处理正常的配置加载以及远端服务配置加载(如果存在)之后调用应用及定义配置加载逻辑.
3. 其他值得注意的改进包括
osgl-tool 依赖更新到 1.25.0.
这个版本实现了一个很多小伙伴长期要求需求: 为单字母名字空间提供别名. 下面是单字母名字空间的别名印射表:
- $ -> Lang # 这是很早就存在的别名
- C-> CollectionUtil
- S -> StringUtil
- E -> ExceptionUtil
- N -> NumberUtil
以前的版本只能加载 src/test/resources/scenarios
目录下直接的测试场景文件 (该目录下任何后缀为 .yml
的文件). Act 1.9 支持递归加载该目录下任意层子目录的 .yml
文件, 方便测试场景文件的管理. 对于不了解 ActFramework 自动测试支持的小伙伴, 这里是传送门.
用过 Act 的小伙伴都知道, Act 对请求参数绑定的支持已经是近乎 bug 的存在了. Act 1.9 的这个改进进一步增强了这方面的支持. 改进源自老码农自己的一个实际项目. 某个项目中用于登录注册的 Authenticator
控制器类定义了一组绑定到 Session 变量的字段. 另一个控制器的请求处理方法也需要使用这一组字段, 老码农不想重新列写所有的 @SessionVariable("a") String a
这样的代码, 因此干脆直接在参数列表里注入 Authenticator
实例. #1336 就是为这个需求服务的.
这个增强也源自老码农的实际项目需求. 某项目服务需要发送的有些类型数据数量很大, 但并不常常变动. 因此我们的请求处理方法上使用了 @CacheFor
注解. 这个注解的意思是:
- 如果前端发来请求的 If-None-Match 头的值(上次发送响应的
E-Tag
头) 匹配本次计算出的 E-Tag 值, 则直接返回304 Not Modified
响应. - 节省带宽 - 按照请求参数生成
Key
并放置进缓存. 如果前端请求没有If-None-Match
头, 或者值与E-Tag
值不匹配, 则根据请求参数在缓存中查询, 找到则返回, 否则进入请求处理方法 - 从数据库中去数据并计算返回.
在老码农的特殊项目里, 我们对内存的要求比较紧, 因此不希望有中间缓存. #1328 的改进就是在 @CacheFor
注解中加上了 eTagOnly
这个变量, 如果设置为 true
则忽略掉中间缓存, E-Tag
匹配不上直接进入请求处理器拿数据
#1320 增加在开发模式下获得 System Properties 的服务端口
开发模式下常常需要检查某个 System.Properies
值, 这里我们提供了一个系统服务端口: /~/system/properties/{property-name}
来方便开发速查系统变量:
注意这个端口仅仅在开发模式下可用. 当应用运行在产品模式下时请求该端口会返回 404 Not Found
Act 默认使用 5460 端口启动系统. 这个在开发环境下没有问题. 但如果公司部署了 CI 系统, 例如 Jenkins, 有可能多个应用项目或者单个项目的多个实例会同时启动(测试), 使用固定端口会带来端口冲突. #1317 的改进在于当以批处理方式运行自动化测试的时候随机选取未使用端口来启动项目:
下面的代码会导致路由映射错误 - 同一个路由 (/foo
) 映射到不同的请求处理方法上:
以前的版本不能很好地定位到出错地点:
新版本提供的错误信息对开发人员更一目了然:
以上是老码农给大家分享的 Act-1.9 带来的主要改进. 更多新版本的修复和改进信息可以在这里获得.
Act-1.9 的坐标, 在你的 pom.xml
文件中加入 parent:
<parent>
<groupId>org.actframework</groupId>
<artifactId>act-starter-parent</artifactId>
<version>1.9.0.1</version>
</parent>
如果需要启动新的项目, 可以从这里选取你需要的项目类型.
最后, 感谢老用户对 Act 的信任与支持, 欢迎新人尝试 Act, 其他资源:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Seata 1.2.0 重磅发布,支持 XA 事务模式
- Containerd 1.5 发布:重磅支持 docker-compose!
- 重磅好消息!TensorFlow开始支持微信小程序
- Seata 1.3.0 重磅发布,支持多主键,自动升降级
- GoProxy-Web 全面重构,重磅发布:支持全局代理,自启动
- 玩游戏更加畅快!安卓Q系统重磅功能曝光:支持全新游戏引擎
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。