为了账号安全,请及时绑定邮箱和手机立即绑定

在Play框架中注入具有多个实现的接口

在Play框架中注入具有多个实现的接口

莫回无 2022-08-17 15:24:32
我想使用@Inject注释注入java接口,但由于此接口有多个实现,因此我无法获得play框架将如何解决,我试图在春季找到类似限定符注释的东西,但无法在play文档中找到类似的东西。请让我知道如何实现这一点。interface i1 {    void m1() {}}class c1 implements i1{}class c2 implements i1{}class c {    @Inject     i1 i; // which instance will be injected here how to resolve this conflict.}
查看完整描述

1 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

玩框架使用 Guice:


https://www.playframework.com/documentation/2.7.x/JavaDependencyInjection https://github.com/google/guice/wiki/Motivation


您可以通过不同的方式实现它。最简单的例子:


1. 绑定注释


如果你只需要一个实现。https://www.playframework.com/documentation/2.7.x/JavaDependencyInjection#Binding-annotations


import com.google.inject.ImplementedBy;


@ImplementedBy(c1.class)

public interface i1 {

    void m1();

}

2. 编程绑定


如果您需要同一类的一些实现。类似于限定符。你要求的那个。https://www.playframework.com/documentation/2.7.x/JavaDependencyInjection#Programmatic-bindings


import com.google.inject.AbstractModule;

import com.google.inject.name.Names;


public class Module extends AbstractModule {

  protected void configure() {


    bind(i1.class)

      .annotatedWith(Names.named("c1"))

      .to(c1.class);


    bind(i1.class)

      .annotatedWith(Names.named("c2"))

      .to(c2.class);

  }

}

代码的后面部分


@Inject @Named("c1")

i1 i;


查看完整回答
反对 回复 2022-08-17
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号