重磅! Act 1.9 发布 - 弃用 Java7,支持 Java 8 到 14
大家好, 我是老碼農(nóng)老羅。很高興和大家分享 ActFramework 1.9 的發(fā)布新聞.
對(duì)于還不了解 ActFramework 的小伙伴, Act 是一款 Java Web 應(yīng)用開發(fā)框架. 在開發(fā)體驗(yàn), 表達(dá)力以及運(yùn)行時(shí)性能等方面有很強(qiáng)的優(yōu)勢(shì). 上周末老碼農(nóng)剛剛做了 Act 的第一個(gè)分享直播, 錄屏已登錄 B 站: https://www.bilibili.com/video/BV1iK411n7iv/.
下面我們來看看 Act-1.9 帶來了那些改進(jìn)/修復(fù):
1. 棄用 Java7 并支持 Java8~ Java14
ActFramework 1.9 帶來了 21 項(xiàng)改進(jìn)/錯(cuò)誤修復(fù). 其中最主要變動(dòng)是 支持 Java9 ~ Java14. 同時(shí)放棄對(duì) Java7 的支持. 這項(xiàng)改進(jìn)支持開發(fā)使用 Java9 以上的新語言特性以及 JDK 中的新方法. 同時(shí)還支持開發(fā)和部署環(huán)境的任意搭配, 意味著開發(fā)者可以自由地選擇開發(fā)環(huán)境和部署環(huán)境:
- 使用 Java8 開發(fā)的應(yīng)用可以部署到 Java8 以及 Java9+ 的環(huán)境中運(yùn)行
- 使用 Java9+ 開發(fā)的應(yīng)用可以部署到 Java8 以及 Java9+ 的環(huán)境中運(yùn)行
2. 配置加載的改進(jìn)
另一個(gè)較大改進(jìn)在于配置文件的加載邏輯. 包括
#1318 從遠(yuǎn)端服務(wù)器加載配置
詳情請(qǐng)參見 issue 其中定義了如何實(shí)現(xiàn)遠(yuǎn)端服務(wù)器以及安全通信.
#1345 允許應(yīng)用定義自己的配置加載邏輯
應(yīng)用只需要定義一個(gè)提供一下方法的類:
public Map<String, Object> loadConfigurations ();
并用 conf-loader 指定該類名即可. Act 將在處理正常的配置加載以及遠(yuǎn)端服務(wù)配置加載(如果存在)之后調(diào)用應(yīng)用及定義配置加載邏輯.
3. 其他值得注意的改進(jìn)包括
osgl-tool 依賴更新到 1.25.0.
這個(gè)版本實(shí)現(xiàn)了一個(gè)很多小伙伴長(zhǎng)期要求需求: 為單字母名字空間提供別名. 下面是單字母名字空間的別名印射表:
- $ -> Lang # 這是很早就存在的別名
- C-> CollectionUtil
- S -> StringUtil
- E -> ExceptionUtil
- N -> NumberUtil
#1337 允許遞歸加載測(cè)試場(chǎng)景文件
以前的版本只能加載 src/test/resources/scenarios 目錄下直接的測(cè)試場(chǎng)景文件 (該目錄下任何后綴為 .yml 的文件). Act 1.9 支持遞歸加載該目錄下任意層子目錄的 .yml 文件, 方便測(cè)試場(chǎng)景文件的管理. 對(duì)于不了解 ActFramework 自動(dòng)測(cè)試支持的小伙伴, 這里是傳送門.
#1336 允許在請(qǐng)求處理函數(shù)中注入另一個(gè)控制器的實(shí)例
用過 Act 的小伙伴都知道, Act 對(duì)請(qǐng)求參數(shù)綁定的支持已經(jīng)是近乎 bug 的存在了. Act 1.9 的這個(gè)改進(jìn)進(jìn)一步增強(qiáng)了這方面的支持. 改進(jìn)源自老碼農(nóng)自己的一個(gè)實(shí)際項(xiàng)目. 某個(gè)項(xiàng)目中用于登錄注冊(cè)的 Authenticator 控制器類定義了一組綁定到 Session 變量的字段. 另一個(gè)控制器的請(qǐng)求處理方法也需要使用這一組字段, 老碼農(nóng)不想重新列寫所有的 @SessionVariable ("a") String a 這樣的代碼, 因此干脆直接在參數(shù)列表里注入 Authenticator 實(shí)例. #1336 就是為這個(gè)需求服務(wù)的.
#1328 增強(qiáng) HTTP Cache
這個(gè)增強(qiáng)也源自老碼農(nóng)的實(shí)際項(xiàng)目需求. 某項(xiàng)目服務(wù)需要發(fā)送的有些類型數(shù)據(jù)數(shù)量很大, 但并不常常變動(dòng). 因此我們的請(qǐng)求處理方法上使用了 @CacheFor 注解. 這個(gè)注解的意思是:
- 如果前端發(fā)來請(qǐng)求的 If-None-Match 頭的值(上次發(fā)送響應(yīng)的
E-Tag頭) 匹配本次計(jì)算出的 E-Tag 值, 則直接返回304 Not Modified響應(yīng). - 節(jié)省帶寬 - 按照請(qǐng)求參數(shù)生成
Key并放置進(jìn)緩存. 如果前端請(qǐng)求沒有If-None-Match頭, 或者值與E-Tag值不匹配, 則根據(jù)請(qǐng)求參數(shù)在緩存中查詢, 找到則返回, 否則進(jìn)入請(qǐng)求處理方法 - 從數(shù)據(jù)庫中去數(shù)據(jù)并計(jì)算返回.
在老碼農(nóng)的特殊項(xiàng)目里, 我們對(duì)內(nèi)存的要求比較緊, 因此不希望有中間緩存. #1328 的改進(jìn)就是在 @CacheFor 注解中加上了 eTagOnly 這個(gè)變量, 如果設(shè)置為 true 則忽略掉中間緩存, E-Tag 匹配不上直接進(jìn)入請(qǐng)求處理器拿數(shù)據(jù)
#1320 增加在開發(fā)模式下獲得 System Properties 的服務(wù)端口
開發(fā)模式下常常需要檢查某個(gè) System.Properies 值, 這里我們提供了一個(gè)系統(tǒng)服務(wù)端口: /~/system/properties/{property-name} 來方便開發(fā)速查系統(tǒng)變量:
注意這個(gè)端口僅僅在開發(fā)模式下可用. 當(dāng)應(yīng)用運(yùn)行在產(chǎn)品模式下時(shí)請(qǐng)求該端口會(huì)返回 404 Not Found
#1317 當(dāng)批處理形式運(yùn)行自動(dòng)測(cè)試時(shí)隨機(jī)選取未使用端口
Act 默認(rèn)使用 5460 端口啟動(dòng)系統(tǒng). 這個(gè)在開發(fā)環(huán)境下沒有問題. 但如果公司部署了 CI 系統(tǒng), 例如 Jenkins, 有可能多個(gè)應(yīng)用項(xiàng)目或者單個(gè)項(xiàng)目的多個(gè)實(shí)例會(huì)同時(shí)啟動(dòng)(測(cè)試), 使用固定端口會(huì)帶來端口沖突. #1317 的改進(jìn)在于當(dāng)以批處理方式運(yùn)行自動(dòng)化測(cè)試的時(shí)候隨機(jī)選取未使用端口來啟動(dòng)項(xiàng)目:
#1313 改進(jìn)路由出錯(cuò)時(shí)的報(bào)錯(cuò)信息
下面的代碼會(huì)導(dǎo)致路由映射錯(cuò)誤 - 同一個(gè)路由 (/foo) 映射到不同的請(qǐng)求處理方法上:
以前的版本不能很好地定位到出錯(cuò)地點(diǎn):
新版本提供的錯(cuò)誤信息對(duì)開發(fā)人員更一目了然:
以上是老碼農(nóng)給大家分享的 Act-1.9 帶來的主要改進(jìn). 更多新版本的修復(fù)和改進(jìn)信息可以在這里獲得.
Act-1.9 的坐標(biāo), 在你的 pom.xml 文件中加入 parent:
<parent> <groupId>org.actframework</groupId> <artifactId>act-starter-parent</artifactId> <version>1.9.0.1</version> </parent>
如果需要啟動(dòng)新的項(xiàng)目, 可以從這里選取你需要的項(xiàng)目類型.
最后, 感謝老用戶對(duì) Act 的信任與支持, 歡迎新人嘗試 Act, 其他資源:
- 英文聊天室
- 技術(shù)支持
- 啟動(dòng)新項(xiàng)目的方法
- 示例項(xiàng)目合集
總結(jié)
以上是生活随笔為你收集整理的重磅! Act 1.9 发布 - 弃用 Java7,支持 Java 8 到 14的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 遇人玫瑰下一句是什么呢?
- 下一篇: 微软开发出一套能恢复严重退化老照片的新算