我有一个REST控制器
@Path("/greet")
@RequestScoped
public class GreetController {
@Inject
private GreeterService greeterService;
@GET
@Path("{name}")
@Produces(TEXT_PLAIN)
public String greet(@PathParam("name") String name) {
return greeterService.greet(name);
}
}
使用GreeterService的>]
@RequestScoped public class GreeterService { @Inject private Greeter greeter; public String greet(String name) { return greeter.greet(name); } }
GreeterService本身注入了具有两个实现的接口
@RequestScoped @Hello public class HelloGreeter implements Greeter { @Override public String greet(String name) { return "Hello " + name; } }
和
@RequestScoped @Whazzup public class WhazzupGreeter implements Greeter { @Override public String greet(String name) { return "Whazzup " + name; } }
[
@Whazzup
和@Hello
只是限定词。
我正在尝试根据GreetController中使用的限定符将Greeter
-接口的正确实现注入到GreeterService
中。使用CDI甚至可能吗?一个简单的解决方法当然是每个预选赛都有两个GreeterService
,但这似乎是一个坏主意,因为添加新的预选赛时GreeterService
的数量会增加。
当然,这只是一个基本示例,没有必要使用GreeterServcie,但不允许将我的公司代码发布到StackOverflow,因此我必须实现一个简单的示例来重现我们的体系结构。
提前感谢!
我有一个REST控制器@Path(“ / greet”)@RequestScoped公共类GreetController {@Inject private GreeterService greeterService; @GET @Path(“ {name}”)@Produces(TEXT_PLAIN)...
要注入合格的物品,请确保该物品和注入点上出现限定符: