我是否需要创建一个将接口绑定到其他实现的新模块?
Chef newChef = Guice.createInjector(Stage.DEVELOPMENT, new Module() {
@Override
public void configure(Binder binder) {
binder.bind(FortuneService.class).to(FortuneServiceImpl.class);
}
}).getInstance(Chef.class);
Chef newChef2 = Guice.createInjector(Stage.DEVELOPMENT, new Module() {
@Override
public void configure(Binder binder) {
binder.bind(FortuneService.class).to(FortuneServiceImpl2.class);
}
}).getInstance(Chef.class);
我无法触摸厨师课堂或界面。我只是在运行时将Chef的FortuneService绑定到不同接口的客户端。
外观类似于Guice常见问题解答中的“
机器人腿”部分。“如何创建一个带有两个Leg对象的机器人,左边的一个对象注入一个LeftFoot,右边的一个注入RightFoot。”
但是只有一个在两个上下文中都可以重用的Leg类。
有一个PrivateModules解决方案。它使用两个单独的私有模块,一个@Left模块和一个@Right模块。每个都有未注释的Foot.class和Leg.class的绑定,并公开带注释的Leg.class的绑定:
class LegModule extends PrivateModule {
private final Class<? extends Annotation> annotation;
LegModule(Class<? extends Annotation> annotation) {
this.annotation = annotation;
}
@Override protected void configure() {
bind(Leg.class).annotatedWith(annotation).to(Leg.class);
expose(Leg.class).annotatedWith(annotation);
bindFoot();
}
abstract void bindFoot();
}
…并将其粘合在一起:
public static void main(String[] args) {
Injector injector = Guice.createInjector(
new LegModule(Left.class) {
@Override void bindFoot() {
bind(Foot.class).toInstance(new Foot("leftie"));
}
},
new LegModule(Right.class) {
@Override void bindFoot() {
bind(Foot.class).toInstance(new Foot("righty"));
}
});
}
我没有问题绑定单例实例到其他一些实例使用@注入。但是,当涉及到绑定一个类的更多实例到其他一些实例(这是单例),它拒绝以某种方式绑定它,我得到了空引用。 我的代码示例是: 当我创建几个WebSocketManagerImpl实例时,每个factoryImpl字段都是空指针。我做错什么了吗?
我的Xamarin Android绑定项目(在修复了几个重复的方法后)编译正确。
我添加到我们的大型Java应用程序中的一个模块必须与另一家公司的SSL安全网站进行交互。问题是站点使用的是自签名证书。我有一个证书的副本来验证我没有遇到中间人攻击,我需要将这个证书合并到我们的代码中,这样才能成功连接到服务器。 下面是基本代码: 如果不对自签名证书进行任何额外的处理,这将在conn.getOutputStream()中终止,但以下情况除外: 我还看到我可以创建一个TrustMana
我有一个关于在Guice中绑定的问题。 Guice不会知道我想要IMYInterface的哪个实现。我是否可以在这个阶段指定注释来有选择地说:我想要MyClass2的实现? 多谢
问题内容: 我要添加到大型Java应用程序中的模块必须与另一家公司的SSL安全网站进行对话。问题是该站点使用自签名证书。我有证书的副本以验证我没有遇到中间人攻击,并且我需要将此证书合并到我们的代码中,以确保成功连接到服务器。 这是基本代码: 如果没有对自签名证书进行任何其他处理,它将死于conn.getOutputStream(),但以下情况除外: 理想情况下,我的代码需要教会Java在应用程序中
问题内容: 我正在使用PDO,是否需要清理GET参数? 我知道我是否比那不是问题。但是我的方式安全吗? 问题答案: 是的,这很安全。和之间的唯一区别是: 一次接受多个参数,而每个参数都必须 允许您指定参数类型,同时将所有内容绑定为字符串 将参数传递给通常是一个方便的快捷方式,它仍然是安全的。