我不明白什么时候应该使用@Controller,以及何时@Endpoint使用Micronaut框架创建端点。
在文档之后,我创建了一个服务,并以这种方式在/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?中的端点上可用的正确方法。
如果这个问题是由于对更基本的概念缺乏了解而引起的,你能给我提供参考吗?
发布于 2021-04-13 13:57:36
@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;
}
// ...
}https://stackoverflow.com/questions/67076275
复制相似问题