大家好, 我是老码农老罗。很高兴和大家分享 ActFramework 1.9 的发布新闻.
对于还不了解 ActFramework 的小伙伴, Act 是一款 Java Web 应用开发框架. 在开发体验, 表达力以及运行时性能等方面有很强的优势. 上周末老码农刚刚做了 Act 的第一个分享直播, 录屏已登录 B 站: https://www.bilibili.com/video/BV1iK411n7iv/.
下面我们来看看 Act-1.9 带来了那些改进/修复:
1. 弃用 Java7 并支持 Java8 ~ Java14
ActFramework 1.9 带来了 21 项改进/错误修复. 其中最主要变动是 支持 Java9 ~ Java14. 同时放弃对 Java7 的支持. 这项改进支持开发使用 Java9 以上的新语言特性以及 JDK 中的新方法. 同时还支持开发和部署环境的任意搭配, 意味着开发者可以自由地选择开发环境和部署环境:
- 使用 Java8 开发的应用可以部署到 Java8 以及 Java9+ 的环境中运行
- 使用 Java9+ 开发的应用可以部署到 Java8 以及 Java9+ 的环境中运行
2. 配置加载的改进
另一个较大改进在于配置文件的加载逻辑. 包括
#1318 从远端服务器加载配置
详情请参见 issue 其中定义了如何实现远端服务器以及安全通信.
#1345 允许应用定义自己的配置加载逻辑
应用只需要定义一个提供一下方法的类:
public Map<String, Object> loadConfigurations ();
并用 conf-loader
指定该类名即可. Act 将在处理正常的配置加载以及远端服务配置加载(如果存在)之后调用应用及定义配置加载逻辑.
3. 其他值得注意的改进包括
osgl-tool 依赖更新到 1.25.0.
这个版本实现了一个很多小伙伴长期要求需求: 为单字母名字空间提供别名. 下面是单字母名字空间的别名印射表:
- $ -> Lang # 这是很早就存在的别名
- C-> CollectionUtil
- S -> StringUtil
- E -> ExceptionUtil
- N -> NumberUtil
#1337 允许递归加载测试场景文件
以前的版本只能加载 src/test/resources/scenarios
目录下直接的测试场景文件 (该目录下任何后缀为 .yml
的文件). Act 1.9 支持递归加载该目录下任意层子目录的 .yml
文件, 方便测试场景文件的管理. 对于不了解 ActFramework 自动测试支持的小伙伴, 这里是传送门.
#1336 允许在请求处理函数中注入另一个控制器的实例
用过 Act 的小伙伴都知道, Act 对请求参数绑定的支持已经是近乎 bug 的存在了. Act 1.9 的这个改进进一步增强了这方面的支持. 改进源自老码农自己的一个实际项目. 某个项目中用于登录注册的 Authenticator
控制器类定义了一组绑定到 Session 变量的字段. 另一个控制器的请求处理方法也需要使用这一组字段, 老码农不想重新列写所有的 @SessionVariable ("a") String a
这样的代码, 因此干脆直接在参数列表里注入 Authenticator
实例. #1336 就是为这个需求服务的.
#1328 增强 HTTP Cache
这个增强也源自老码农的实际项目需求. 某项目服务需要发送的有些类型数据数量很大, 但并不常常变动. 因此我们的请求处理方法上使用了 @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
#1317 当批处理形式运行自动测试时随机选取未使用端口
Act 默认使用 5460 端口启动系统. 这个在开发环境下没有问题. 但如果公司部署了 CI 系统, 例如 Jenkins, 有可能多个应用项目或者单个项目的多个实例会同时启动(测试), 使用固定端口会带来端口冲突. #1317 的改进在于当以批处理方式运行自动化测试的时候随机选取未使用端口来启动项目:
#1313 改进路由出错时的报错信息
下面的代码会导致路由映射错误 – 同一个路由 (/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, 其他资源:
- 英文聊天室
- 技术支持
- 启动新项目的方法
- 示例项目合集