Micronaut-Overview

概述

Micronaut是一个为创建模块化,易于测试,微服务,无服务器应用程序基于JVM,先进的全栈框架。

多语言框架

POLYGLOT FRAMEWORK

  • Java
  • Groovy
  • Kotlin

快速启动 - 低内存消耗

FAST STARTUP TIME — LOW MEMORY CONSUMPTION

基于反射的IoC框架为代码中的每个字段,方法和构造函数加载和缓存反射数据,而使用Micronaut,应用程序启动时间和内存消耗不受代码库大小的限制。

GraalVM

GraalVM是Oracle的一种新型通用虚拟机,支持多语言运行时环境,并能够将Java应用程序编译为本机机器代码。

使用GraalVM,Micronaut应用程序启动数十毫秒!Micronaut具有依赖注入和面向方面编程运行时,不使用反射。这使Micronaut应用程序更容易 在GraalVM上运行。

声明性反应性编译时客户端

DECLARATIVE, REACTIVE, COMPILE-TIME HTTP CLIENT

Micronaut提供了一个简单的编译时面向方面的编程API,它不使用反射,所以大大减少内存使用。

import io.micronaut.http.annotation.Get;
import io.micronaut.http.client.Client;
import io.reactivex.Single;

@Client("/hello")
public interface HelloClient {
    @Get("/")
    Single hello();
}

基于Netty构建的非阻塞服务端

NON-BLOCKING HTTP SERVER BUILT ON NETTY

通过平滑的学习曲线,Micronaut的服务端可以尽可能轻松地暴露给客户端可以使用。

import io.micronaut.http.annotation.*;

@Controller("/hello") 
public class HelloController {
    @Get("/") 
    public String index() {
        return "Hello World"; 
    }
}

快速简便的测试

在单元测试中轻松启动服务器和客户端,并立即运行它们。

Spock

import io.micronaut.runtime.server.EmbeddedServer
import spock.lang.*

class HelloClientSpec extends Specification {
    @Shared
    @AutoCleanup
    EmbeddedServer embeddedServer =
        ApplicationContext.run(EmbeddedServer)

    @Shared
    HelloClient client = embeddedServer
        .applicationContext
        .getBean(HelloClient)

    void "test hello world response"() {
        expect:
        client.hello().blockingGet() == "Hello World"
    }
}

或者

import io.micronaut.test.annotation.MicronautTest;
import org.junit.jupiter.api.Test;
import javax.inject.Inject;

import static org.junit.jupiter.api.Assertions.assertEquals;


@MicronautTest
public class HelloControllerTest {

    @Inject
    HelloClient helloClient;

    @Test
    public void testHello() {
        assertEquals(
                "Hello Fred!",
                helloClient.hello("Fred").blockingGet());
    }

}

高效编译时依赖注入和切面

Micronaut提供了一个不使用反射而是使用简单的编译时注入切面代码的编程机制。

@Scheduled(fixedRate = "5m")
@Retry(attempts='5')
void everyFiveMinutes() {
    messageService.sendMessage("Hello World");
}

完全反应和非阻塞程序

Micronaut支持任何实现Reactive Streams的框架,包括RxJava和Reactor。

@Client( id = "person-service" )
public interface PersonClient {
    public Single<Person>
        save(@Body Single<Person>person)
}

本地原生云应用

NATIVELY CLOUD NATIVE

Micronaut的云支持是内置的,包括对常见发现服务,分布式跟踪工具和云运行时的支持。

在这里插入图片描述

快速数据访问配置

Micronaut提供合理的默认设置,可自动配置您喜欢的数据访问工具包和API,以便轻松编写自己的集成。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值