这是地图
@Autowired
private Map<String, ISendableConverter> converters;
和 ISendableConverter
public interface ISendableConverter {
ISendableMsg convert(BaseMessage baseMessage);
String getType();
}
有一些类实现了 ISendableConverter
我想通过使用 spring @Autowried
注释将它们注入变量 converters
。
类的实例作为值,方法的结果 getType()
作为键。
像这个
@Component
public class SendableVoiceMsgConverter implements ISendableConverter {
@Override
public ISendableMsg convert(BaseMessage baseMessage) {
// TODO Auto-generated method stub
return null;
}
@Override
public String getType() {
return "VOICE";
}
}
这可能吗?如何?
原文由 Joe 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用 Spring Java 配置使用您选择的键创建一个自动初始化的映射:
在用
@Configuration
注释注释的类中:比你注入这张地图:
如果您定义了更多相同类型的地图,您可以选择将一些选择器字符串添加到您的
@Resource
注释中。这样你所要做的就是通过你的spring bean实现
ISendableConverter
,它会自动出现在上面定义的Map中。您不需要为每个实现手动创建地图项。