歡迎您光臨本站 註冊首頁

Act-1.8.24 發布 - 非苗條型 Java Web 框架

←手機掃碼閱讀     admin @ 2019-06-25 , reply:0

1. 核心框架 (act-1.8.24) 更新:

#1151 允許在開發模式下對資源文件過濾 

大家都知道 Maven 能構建發布包的時候對資源文件進行過濾的. 在老碼農一個項目中就採用了 maven 的這種特性, 參考如下代碼:


<script src="/asset/js/main.js?v=${buildNumber}"></script>

在打包運行之後上面代碼中的 `${buildNumber}` 會被 maven 資源插件替換為類似 5b79fc 這樣的東東, 到這裡完全都沒有問題. 在開發時直接運行就麻煩了, 雖然沒有 buildNumber 在開發階段也沒有關係, 問題在於瀏覽器不識別 URL 中的 `${` 這些個符號, 導致js 文件在開發時無法載入. 

#1151 這個新改進允許應用設定下面配置 


resource.filtering=true

當上面的配置項為 `true` 時, 框架在開發時將對靜態文件進行過濾, 替換掉上面 `${...}` 類型的變數. 替換方式是從配置中尋找關鍵字, 倘若找不到則替換為空字串.

#1149 CSV 視圖 - 支持 AdaptiveBean 類型

AdaptiveBean 是 ActFramework 獨創的數據類型, 集 POJO 和 Map 功能為一身. 這個增強讓 CSV 視圖支持控制器返回 Iterable<AdaptiveBean> 類型的數據並正確生成 CSV 文件

#1148 啟動時發生 Block issue 沒能顯示正確的錯誤頁面

最近老碼農開發過程中發現突然訪問不了服務了:

看了看控制台, 原來啟動時發生了 block issue (阻止程序正常運行的問題):

這個不正常啊, 應該顯示一個錯誤頁面才對. #1148 這個修復了這個問題, 可以正常報告啟動時的 block issue 了:

#1147 資源載入器 - 增強 Map 類型的 key, value 類型參數的處理

假設有這麼一個資源文件 `test.map`:


1=true
2=false

以前要載入上面文件內容到 Map 只能這樣聲明載入:


@LoadResource("test.map")
private Map<String, String> testMap;

這個改進允許應用採用其他 Key, Value 類型來聲明 Map 了:


@LoadResource("test.map")
private Map<Integer, Boolean> testMap;

#1146 支持載入 Map 類型資源的時候忽略單行與行內註釋

假設有下面的資源文件 test-map.txt


# 這是一行註釋
foo=bar #這是行內註釋

我們在代碼中載入上面的文件內容到 Map 類型欄位中:


@LoadResouce("test-map.txt")
private Map<String, String> testMap;

程序運行時會發現 testMap 中有兩條記錄: 

1. key="# 這是一行註釋" val=null
2. key="foo", val="bar #這是行內註釋"

很明顯這不是程序需要的結果. #1146 增強了 Map 類型的載入邏輯, 現在運行程序, testMap 中只有一條記錄: key="foo", val="bar"

#1145 第二次下載大 csv 文件會發生下載不完的問題

這是因為 ActFramework 在第一次下載採用常規方式進行之後偵測到響應過大, 因此以後該介面的寫入響應方式都採用直接寫 outputStream, 然而這個寫入過程有邏輯錯誤, outputStream 被提前關閉了. #1145 修復了這個問題

#1144 CLI 非同步報告進度條吃掉了大部分的 CPU

CLI 非同步報告進度是個很 Nice 的特性:

然而老碼農最近的項目實踐中某個非同步執行過程時間很長, 偶然發現 JVM 吃滿了 CPU, 但這個非同步過程有遠端調用, 並不是 CPU 密集性. 調試后發現罪魁在  CLI 的進度報告上面:

#1144 修復了這個問題. 現在小夥伴們可以放心大膽使用 CLI 非同步進度報告了. 悄悄說一下, 這個特性很容易使用, 這樣寫代碼就可以:


    @Async // 聲明為非同步
    @ReportProgress // 要求 CLI 報告執行進度
    @Command(name = "calcPi", help = "calculate pi") // 聲明這是一個 CLI 命令方法, 命令名字為 calcPi
    public double calcPi(
        @DefaultValue("99999999") @Optional int steps, // 命令可選參數, 使用 -s 或 --steps 指定
        ProgressGauge gauge // 注入一個進度報告器
    ){
        gauge.updateMaxHint(steps); // 更新進度預期步數
        double pi = 0.0d;
        for (int i = steps; i > 0; --i) {
            pi += Math.pow(-1, i + 1) / (2 * i - 1);
            if (i == 1) {
                pi *= 4;
                break;
            }
            gauge.step(); // 步進 1 次
        }
        return pi;
    }

2. Starters (act-starter-parent-1.8.24.0) 更新

  • act 更新到 1.8.24
  • act-beetl 更新到 1.5.3 - beetl 更新至 3.0.5.RELEASE
  • act-beetsql 更新到 1.5.11 - beetsql 更新至 2.12.5.RELEASE

3. maven-archetypes (1.8.24.1) 更新:

  • parent 更新到 act-starter-parent-1.8.24.0
  • 在 app.properties 模板中加入了 resource.filtering 的註釋說明
  • 在 pom.xml 模板中加入了 jvm option 和 docker 配置參數說明

現在 maven-archetype 生成的新項目 pom.xml 是這樣的:


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycom.helloservice</groupId>
  <artifactId>helloservice</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>My Awesome Application</name>

  <parent>
    <groupId>org.actframework</groupId>
    <artifactId>act-starter-parent</artifactId>
    <version>1.8.24.0</version>
  </parent>

  <properties>
    <!-- remove the following line if you are on Java 7-->
    <java.version>1.8</java.version>
    <app.entry>com.mycom.helloservice.AppEntry</app.entry>

    <!-- tune your JVM arguments here
    <vmargs.heap.init>256M</vmargs.heap.init>
    <vmargs.heap.max>2G</vmargs.heap.max>
    <vmargs.extended />
    -->

    <!-- set your docker configuration here if needed
    <docker.repo>org.actframework/archetype-simple-restful-service</docker.repo>
    <docker.profile>prod</docker.profile>
    <docker.group>default</docker.group>
    <docker.http.port>5460</docker.http.port>
    <docker.cli.port>5461</docker.cli.port>
    <-->
  </properties>

  <dependencies>
    <!-- add your dependencies here -->
  </dependencies>

</project>

 

感謝關注 #ActFramework。最後看官若要問非苗條型是個什麼東東? 此梗源自老碼農博客: https://my.oschina.net/greenlaw110/blog/3065695


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/107724/actframework-1-8-24-released
Act-1.8.24 發布 - 非苗條型 Java Web 框架已經有374次圍觀

http://coctec.com/news/soft/show-post-208083.html