我有以下情況:如何配置Guice,它注入類我想要的綁定?
public class User {
@Inject
private MusicInterface movie;
}
public interface MusicInterface {
public void getTitle();
}
,並有吉斯配置類:
public class Module extends AbstractModule {
@Override
protected void configure() {
bind(MusicInterface.class).annotatedWith(Names.named("rock")).to(RockMusic.class);
bind(MusicInterface.class).annotatedWith(Names.named("pop")).to(PopMusic.class);
bind(User.class).annotatedWith(Names.named("user1").to(User.class);
bind(User.class).annotatedWith(Names.named("user2").to(User.class);
}
}
我的問題是: 如何注入到用戶級通緝我的音樂綁定?
例如:
在我的主我想叫巖注射類來獲得用戶1:
Injector injector = Guice.createInjector(new Module());
User user1 = injector.getInstance(Key.get(User.class,Names.named("user1")));
可以說已經user1的屬性RockMusic.class,後來我想與流行user2的音樂:
User user2 = injector.getInstance(Key.get(User.class,Names.named("user2")));
而這個類將有屬性PopMusic.class。
我該怎麼做?
我知道我可以在用戶類中使用標註@Named(...),但它不是我的情況的解決方案。
什麼表達你的「想要的」綁定是什麼?爲什麼一個用戶會得到搖滾音樂和另一個流行音樂? –