codecamp

Micronaut 桥接 Spring AOP

虽然 Micronaut 的设计是基于编译时的方式,不依赖于 Spring 依赖注入,但在 Spring 生态系统中仍然有很多不直接依赖于 Spring 容器的价值。

您可能希望在 Micronaut 中使用现有的 Spring 项目,并配置要在 Micronaut 中使用的 bean。

您可能还希望利用来自 Spring 的现有 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 支持,你已经获得了这个依赖,并且 HibernateTransactionManager 已经为你配置好了。

这是通过拦截用 Spring 的 @Transactional 和 TransactionInterceptor 注释的方法调用来完成的。

这里的好处是您可以使用 Micronaut 的编译时无反射 AOP 来声明程序化的 Spring 事务。例如:

使用@Transactional

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

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


Micronaut 计划任务
Micronaut 运行嵌入式服务器
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Micronaut 独立命令行应用程序

Micronaut 安全

Micronaut 多租户

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }