如何在指南中执行以下操作?
存在依赖于接口XmlFormatter
的类XmlSerializer
。XmlFormatter
有两种实现:CompactXmlFormatter
和PrettyXmlFormatter
。
另一个类MyApplication
依赖于XmlSerializer
的两个实例。一个实例应该配置CompactXmlFormatter
,另一个配置PrettyXmlFormatter
public class XmlSerializer {
public XmlSerializer(XmlFormatter formatter) {
...
}
}
public interface XmlFormatter {
...
}
public class CompactXmlFormatter implements XmlFormatter {
...
}
public class PrettyXmlFormatter implements XmlFormatter {
...
}
public class MyApplication {
public MyApplication(XmlSerializer compactSerializer, XmlSerializer prettySerializer) {
...
}
}
你如何构造这样一个图?
我知道,一旦你有了2个XmlSerializer
实例,将它们注入MyApplication
需要在MyApplication
构造函数的参数中注释。
我更感兴趣的是如何将XmlFormatter
绑定到CompactXmlFormatter
和PrettyXmlFormatter
。
使用绑定注释来区分每个XmlFormatter
。
在你的Module
:
bind(XmlFormatter.class).aannotatedWith(Pretty.class)
.to(PrettyXmlFormatter.class);
bind(XmlFormatter.class).aannotatedWith(Compact.class)
.to(CompactXmlFormatter.class);
:
@Inject public MyApplication(
@Compact XmlSerializer compactSerializer,
@Pretty XmlSerializer prettySerializer) {
...
当然你必须定义@Pretty
和@Compact
注释:
@BindingAnnotation
@Target({ FIELD, PARAMETER, METHOD })
@Retention(RUNTIME)
public @interface Pretty {}
@BindingAnnotation
@Target({ FIELD, PARAMETER, METHOD })
@Retention(RUNTIME)
public @interface Compact {}