Micronaut 橋接 Spring AOP

2023-03-06 13:37 更新

雖然 Micronaut 的設(shè)計是基于編譯時的方式,不依賴于 Spring 依賴注入,但在 Spring 生態(tài)系統(tǒng)中仍然有很多不直接依賴于 Spring 容器的價值。

您可能希望在 Micronaut 中使用現(xiàn)有的 Spring 項目,并配置要在 Micronaut 中使用的 bean。

您可能還希望利用來自 Spring 的現(xiàn)有 AOP 建議。其中一個例子是 Spring 對帶有@Transactional 的聲明式事務的支持。

Micronaut 提供了對基于 Spring 的事務管理的支持,而不需要 Spring 本身。只需將 spring 模塊添加到您的應用程序依賴項中:

 Gradle Maven 
implementation("io.micronaut.spring:micronaut-spring")
<dependency>
    <groupId>io.micronaut.spring</groupId>
    <artifactId>micronaut-spring</artifactId>
</dependency>

這還需要添加 spring-annotation 模塊依賴作為注解處理器:

 Gradle Maven 
annotationProcessor("io.micronaut.spring:micronaut-spring-annotation")
<annotationProcessorPaths>
    <path>
        <groupId>io.micronaut.spring</groupId>
        <artifactId>micronaut-spring-annotation</artifactId>
    </path>
</annotationProcessorPaths>

如果你使用 Micronaut 的 Hibernate 支持,你已經(jīng)獲得了這個依賴,并且 HibernateTransactionManager 已經(jīng)為你配置好了。

這是通過攔截用 Spring 的 @Transactional 和 TransactionInterceptor 注釋的方法調(diào)用來完成的。

這里的好處是您可以使用 Micronaut 的編譯時無反射 AOP 來聲明程序化的 Spring 事務。例如:

使用@Transactional

import org.springframework.transaction.annotation.Transactional;
...

@Transactional
public Book saveBook(String title) {
    ...
}


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號