亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Micronaut中SpringBoot的示例分析

發布時間:2022-02-25 15:09:34 來源:億速云 閱讀:155 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“Micronaut中SpringBoot的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Micronaut中SpringBoot的示例分析”這篇文章吧。

介紹

Micronaut 是一個框架,它以更快的啟動時間而得名,通常是使用 AWS Lambda 的解決方案的首選。它使用提前 (AOT) 編譯來確定應用程序需要什么。這樣做的結果是應用程序具有更小的內存占用、快速的啟動時間和無反射。

該框架提供了依賴注入、控制反轉(IOC)和面向切面編程(AOP),這與 Spring 提供的類似。使用 Micronaut,您可以創建命令行應用程序、HTTP 服務器應用程序,甚至是事件驅動的應用程序。

創建項目

要創建項目,您可以直接轉到Micronaut 的啟動來創建您的項目。這類似于 spring 如何提供一種使用https://start.spring.io創建項目的方法。

您也可以使用 SDKMan 安裝命令行實用程序。命令行實用程序與啟動站點的作用相同。有關此的更多詳細信息,請參見此處。

在創建項目時,添加Hibernate-JPA功能,因為我們將創建一個具有 CRUD 功能的項目。生成項目后,我們將查看作為 Spring 開發人員通常會做的各種事情。 

創建一個 Bean

通常情況下,在春天,你會使用創建一個bean @bean,@Restcontroller,@service,@repository,等。Micronaut,我們有一些注釋,則類似的。讓我們來看看它們。

  • @controller?— 為您的休息端點定義您的控制器類。

  • @repository?— 定義您的存儲庫 bean。 

  • @singleton?— 定義一個具有單例作用域的 bean。 

  • @prototype?— 定義一個具有原型作用域的 bean 

  • @requestscope?— 定義具有請求范圍的 bean。 

沒有@serviceor@component注釋,但您可以使用上述注釋來創建服務或組件。

除此之外,我們還@infrastructure必須定義一個對應用程序運行至關重要的 bean,它不應被覆蓋,并定義@threadlocal每個線程的 bean 范圍的注解。

為了注入特定的 bean,Micronaut 支持基于構造函數、基于 setter、基于名稱的相同注入機制,這類似于 spring 提供的。在 的情況下@autowire,您現在將使用@inject注釋。

您還可以擁有 bean 生命周期方法、條件 bean、bean 限定符等,它們類似于 spring 提供的那些。您可以隨時在此處的Micronaut 文檔中閱讀有關它的更多信息。

依賴關系

現在,我正在創建一個與 MySQL 通信的 CRUD 應用程序。我需要的來自 Micronaut 的最小依賴是:

<dependency>
      <groupId>io.micronaut</groupId>
      <artifactId>micronaut-inject</artifactId>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>io.micronaut</groupId>
      <artifactId>micronaut-http-server-netty</artifactId>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>io.micronaut.data</groupId>
      <artifactId>micronaut-data-hibernate-jpa</artifactId>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>io.micronaut.sql</groupId>
      <artifactId>micronaut-jdbc-hikari</artifactId>
      <scope>compile</scope>
    </dependency>

除此之外,我還必須添加mysql-connector-java驅動程序才能與 MySQL 通信。

JPA 配置

要創建實體,您可以使用通常的javax.persistence注釋來創建實體、定義 id、列等。 

@Entity
@Table(name = "Orders")
public class Order {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

您的數據源和休眠配置也幾乎保持不變:

datasources:
  default:
    url: jdbc:mysql://localhost:3306/ORDER
    username: root
    password: root
jpa:
  default:
    properties:
      hibernate:
        hbm2ddl:
          auto: update
        show_sql: true
        dialect: org.hibernate.dialect.MySQL8Dialect

為了查詢您的數據庫,我們從 Micronaut 獲取您通過擴展 CRUDRepository 或 JPARepository 等接口創建的接口的實現。我們還使用@query注釋提供 JPA 查詢支持。這是帶有示例查詢方法的 JPA 存儲庫的代碼。

@Repository
public interface OrderRepository extends CrudRepository<Order, Long> {

    @Query("select o from Order as o")
    List<Order> getAllOrders();
}

休息控制器

休息控制器可以通過創建@controller注釋,并提供您的GET,PUT,POST使用映射@get,@put,@post注釋分別。所有這些注釋都來自micronaut-http-client依賴項。

@Controller("/order")
public class WebController {

    private final OrderService orderService;

    public WebController(OrderService orderService) {
        this.orderService = orderService;
    }

    @Get("/{id}")
    public HttpResponse<OrderDTO> getOrder(@PathVariable("id") Long id) {

        Optional<OrderDTO> mayBeOrder = orderService.getOrder(id);
        if (mayBeOrder.isPresent()) {
            return HttpResponse.created(mayBeOrder.get());
        }
        return HttpResponse.notFound();
    }

表現

通過上述配置,應用程序在近2 秒內啟動。 

__  __ _                                  _   
|  \/  (_) ___ _ __ ___  _ __   __ _ _   _| |_ 
| |\/| | |/ __| '__/ _ \| '_ \ / _` | | | | __|
| |  | | | (__| | | (_) | | | | (_| | |_| | |_ 
|_|  |_|_|\___|_|  \___/|_| |_|\__,_|\__,_|\__|
  Micronaut (v2.5.8)

12:55:07.769 [main] INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
12:55:08.150 [main] INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.
12:55:08.157 [main] INFO  org.hibernate.Version - HHH000412: Hibernate ORM core version [WORKING]
12:55:08.248 [main] INFO  o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
12:55:08.351 [main] INFO  org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL57Dialect
12:55:09.059 [main] INFO  io.micronaut.runtime.Micronaut - Startup completed in 1928ms. Server Running: http://localhost:8080

現在,這里有一個問題。

當應用程序啟動時,bean 還沒有連接好,這會延遲發生。當應用程序接收到第一個請求時,bean 連接發生,因此第一個被服務的請求會有一點延遲。隨后的請求非常快。 

現在為了真正提升啟動性能,我們可以創建一個 Native 鏡像。使用本機映像,您可以獲得大約 90 毫秒的啟動時間。 

是的,具有 JPA CRUD 功能的90 毫秒。

以上是“Micronaut中SpringBoot的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

疏附县| 阳泉市| 乌海市| 安岳县| 吉木萨尔县| 司法| 丰原市| 射洪县| 伊川县| 任丘市| 清原| 莒南县| 孟村| 额尔古纳市| 石家庄市| 崇义县| 泸水县| 泰州市| 平顶山市| 格尔木市| 肇东市| 余干县| 临颍县| 韩城市| 赤水市| 鹤庆县| 仲巴县| 庆阳市| 会宁县| 南涧| 嘉义市| 喜德县| 六盘水市| 平塘县| 利辛县| 鄂尔多斯市| 苏尼特左旗| 友谊县| 乐业县| 宁安市| 佛山市|