当前位置: 首页 > 知识库问答 >
问题:

Micronaut-@控制器vs@endpoint

赵志
2023-03-14

我不明白什么时候应该使用@controller以及什么时候使用@endpoint用Micronaut框架创建endpoint。

根据文档,我创建了一个服务,并以以下方式在/endpoint上提供它:

@Controller("/endpoint") 
public class DummyService {
    @Get 
    @Produces(MediaType.TEXT_PLAIN) 
    public String index() {
        return "Hello World!"; 
    }
}

但这里是用@endpoint注释创建的:

@Endpoint("/endpoint") 
public class DummyService {
    @Get 
    @Produces(MediaType.TEXT_PLAIN) 
    public String index() {
        return "Hello World!"; 
    }
}

在Micronaut中创建服务并使其在endpoint可用的正确方法是什么?
如果这个问题是因为对更基本的概念缺乏了解而产生的,你能给我提供参考吗?

共有1个答案

戴博
2023-03-14

@endpoint应该用于管理端点(调整日志级别、管理缓存、监视资源利用等),而不是应用程序功能。@controller应用于不属于管理和监视的应用程序端点。

编辑

针对具体提出的问题:

在Micronaut中创建服务并使其在端点可用的正确方法是什么?

通常,这样做的方法是将一个bean添加到作为您的服务的应用程序上下文中,然后让DI容器在任何需要的地方注入该bean。

@Singleton
public class SomeService {
    // ...
}

@Controller
public class SomeController {
    private final SomeService someService;

    public SomeController(SomeService someService) {
        this.someService = someService;
    }

    // ...
}

@Endpoint
public class SomeManagementEndpoint {
    private final SomeService someService;

    public SomeManagementEndpoint(SomeService someService) {
        this.someService = someService;
    }

    // ...
}
 类似资料:
  • 创建指令时,可以将代码放入编译器、链接函数或控制器中。 在文件中,他们解释说: 编译和链接功能用于角度循环的不同阶段 然而,对我来说还不清楚,哪种代码应该去哪里。 例如:我可以在compile中创建函数并将它们附加到link中的作用域,还是只将函数附加到controller中的作用域? 如何在指令之间共享控制器,如果每个指令可以有自己的控制器?控制器是真的共享,还是只是范围属性?

  • 我使用mn create-app example.micronaut.complete创建了一个新的micronaut应用程序 之后,我使用intellij打开了项目,并将一个新类作为TestController添加到项目中,代码如下: 但我得到了

  • 我正在开发一个新的应用程序,它是和camel。我将RESTendpoint作为该应用程序的一部分公开。 null 你能帮我选择更好的方案吗?

  • 问题内容: 嗨,我是新手,我想知道在控制台中读取用户Input的最佳选择是什么,据我所知有3种方法可以做到: 我应该选择哪一个?为什么选择一个而不选择另一个? 问题答案: 缓冲读取器 从Java 1.1开始 引发检查异常 可以读取字符,字符数组和行 快速 扫描器 从Java 1.5开始 不抛出检查异常 可以读取行,空格分隔的标记,正则表达式分隔的标记和数字 难以阅读单个字符 安慰 从Java 1.

  • 在创建资源类和指定资源格输出式化后, 下一步就是创建控制器操作将资源通过 RESTful APIs 展现给终端用户。 Yii 提供两个控制器基类来简化创建 RESTful 操作的工作:yii\rest\Controller 和 yii\rest\ActiveController, 两个类的差别是后者提供一系列将资源处理成 Active Record 的操作。 因此如果使用 Active Recor