知識庫 / REST RSS 訂閱

構建基於 Apache Microwave 的微服務

REST
HongKong
5
03:52 AM · Dec 06 ,2025

1. 概述

在本教程中,我們將探索 Apache Meecrowave 框架的基本功能。

Meecrowave 是 Apache 的一個輕量級微服務框架,非常適合與 CDI、JAX-RS 和 JSON API 配合使用。 它的設置和部署非常簡單。 它還消除了像 Tomcat、Glassfish、Wildfly 等大型應用程序服務器部署的麻煩。

2. Maven 依賴

要使用 Meecrowave,請在 <em pom.xml:</em > 中定義依賴項:

<dependency>
    <groupId>org.apache.meecrowave</groupId>
    <artifactId>meecrowave-core</artifactId>
    <version>1.2.15</version>
    <classifier>jakarta</classifier>
    <exclusions>
      <exclusion>
        <groupId>*</groupId>
        <artifactId>*</artifactId>
      </exclusion>
    </exclusions>
</dependency>

在 Maven Central 查找最新版本:https://mvnrepository.com/artifact/org.apache.meecrowave/meecrowave-core

3. 啓動一個簡單的服務器

要啓動一個 Meecrowave 服務器,我們只需要編寫 main 方法,創建一個 Meecrowave 實例並調用 main 方法中的 bake() 方法:

public static void main(String[] args) {
    try (Meecrowave meecrowave = new Meecrowave()) {
        meecrowave.bake().await();
    }
}

如果我們將應用程序打包為分發包,則不需要使用主方法;我們將會在後面的章節中探討這個問題。在 IDE 中測試應用程序時,主類非常有用。

作為一種優勢,在 IDE 中開發時,一旦我們使用主類運行應用程序,代碼更改後它將自動重新加載,從而避免了反覆重啓服務器的麻煩,以便進行測試。

請注意,如果使用的是 Java 9,請務必將 javax.xml.bind 模塊添加到 JVM 中。

--add-module javax.xml.bind

通過這種方式創建服務器將使用默認配置啓動。我們可以使用 Meecrowave.Builder 類來程序化更新默認配置:

Meecrowave.Builder builder = new Meecrowave.Builder();
builder.setHttpPort(8080);
builder.setScanningPackageIncludes("com.baeldung.meecrowave");
builder.setJaxrsMapping("/api/*");
builder.setJsonpPrettify(true);

使用此構建器實例在烘焙服務器時:

try (Meecrowave meecrowave = new Meecrowave(builder)) { 
    meecrowave.bake().await();
}

有更多可配置的屬性此處

4. REST 端點

現在,當服務器準備就緒後,讓我們創建一些 REST 端點:

@RequestScoped
@Path("article")
public class ArticleEndpoints {
    
    @GET
    public Response getArticle() {
        return Response.ok().entity(new Article("name", "author")).build();      
    }
    
    @POST 
    public Response createArticle(Article article) { 
        return Response.status(Status.CREATED).entity(article).build(); 
    }
}

請注意,我們主要使用 JAX-RS 註解來創建 REST 端點。

更多關於 JAX-RS 的信息,請參考此處。

在下一部分,我們將看到如何測試這些端點。

5. 測試

使用 Microwave 編寫 REST API 測試用例非常簡單,就像編寫帶有註釋的 JUnit 測試用例一樣。

首先,我們需要將測試依賴添加到我們的 <em pom.xml</em> 中:

<dependency>
    <groupId>org.apache.meecrowave</groupId>
    <artifactId>meecrowave-junit</artifactId>
    <version>1.2.15</version>
    <scope>test</scope>
</dependency>

要查看最新版本,請訪問 Maven Central

此外,讓我們為我們的測試添加 OkHttp 作為 HTTP 客户端:

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.12.0</version>
</dependency>

請查看最新版本 這裏

現在有了依賴項,我們來編寫測試代碼:

@RunWith(MonoMeecrowave.Runner.class)
public class ArticleEndpointsIntegrationTest {
    
    @ConfigurationInject
    private Meecrowave.Builder config;
    private static OkHttpClient client;
    
    @BeforeClass
    public static void setup() {
        client = new OkHttpClient();
    }
    
    @Test
    public void whenRetunedArticle_thenCorrect() {
        String base = "http://localhost:" + config.getHttpPort();
        
        Request request = new Request.Builder()
          .url(base + "/article")
          .build();
        Response response = client.newCall(request).execute();
        assertEquals(200, response.code());
    }
}

在編寫測試用例時,請務必使用 <em >MonoMeecrowave.Runner</em> 類對測試類進行註釋,並注入配置,以便訪問 Meecrowave 測試服務器使用的隨機端口。

6. 依賴注入

為了將依賴注入到類中,我們需要在特定作用域內對這些類進行註解。

讓我們以一個 <em >ArticleService&nbsp;</em > 類為例:

@ApplicationScoped
public class ArticleService {
    public Article createArticle(Article article) {
        return article;
    }
}

現在讓我們將它注入到我們的 ArticleEndpoints 實例中,使用 javax.inject.Inject 註解:

@Inject
ArticleService articleService;

7. 應用程序打包

使用 Meecrowave Maven 插件,創建分發包變得非常簡單:

<build>
    ...
    <plugins>
        <plugin>
            <groupId>org.apache.meecrowave</groupId>
            <artifactId>meecrowave-maven-plugin</artifactId>
            <version>1.2.1</version>
        </plugin>
    </plugins>
</build>

一旦插件已部署,我們就可以使用 Maven 目標 meecrowave:bundle 來打包應用程序。

打包完成後,它將在目標目錄下創建一個 ZIP 文件。

meecrowave-meecrowave-distribution.zip

此壓縮包包含部署應用程序所需的全部文件。

|____meecrowave-distribution
| |____bin
| | |____meecrowave.sh
| |____logs
| | |____you_can_safely_delete.txt
| |____lib
| |____conf
| | |____log4j2.xml
| | |____meecrowave.properties

讓我們導航到bin目錄並啓動應用程序:

./meecrowave.sh start

要停止應用程序:

./meecrowave.sh stop

8. 結論

本文介紹瞭如何使用 Apache Meecrowave 構建微服務。此外,我們還探討了應用程序的基本配置以及創建分發包的準備工作。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.