重磅! Act 1.9 发布 - 弃用 Java7,支持 Java 8 到 14
大家好, 我是老碼農老羅。很高興和大家分享 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, 其他資源:
- 英文聊天室
- 技術支持
- 啟動新項目的方法
- 示例項目合集
總結
以上是生活随笔為你收集整理的重磅! Act 1.9 发布 - 弃用 Java7,支持 Java 8 到 14的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 遇人玫瑰下一句是什么呢?
- 下一篇: 微软开发出一套能恢复严重退化老照片的新算