这是我怎么做的,也是应该做的问题。
我需要在Lambda函数中使用Spring管理的实例。简而言之,我希望DummyBranch、MandrillBranch对象和其他分支由Spring来管理。
public class QOSStrategy {
public static Function<DistributionMessage, List<Feedback>> executeQOS = (message)-> {
QOSFilters qosFilters = new QOSFilters();
List<Branch> providers = qosFilters.getProviderByQOs(message,
Arrays.asList(new DummyEmailBranch(),
new MandrillBranch(),
new EverbrideBranch(),
new JavaMailBranch(),
new DirectSMSBranch()));
}
}我看到的一个选项是从Spring应用程序上下文中获取它。但是有什么方法可以用Annotation来实现呢?
谢谢-Parshu
发布于 2014-08-20 19:20:53
您可以自动收集实现相同接口的所有bean。
请参阅Spring文档这里。
发布于 2014-08-20 22:27:28
我创建了一个由spring管理的QOSBean。结果是这样的-
public class QOSStrategy {
public static Function<DistributionMessage,CustomBean, List<Feedback>> executeQOS = (message, qosbean)-> {
QOSFilters qosFilters = (QOSBean)qosbean.getQosFilters();
List<Branch> providers = qosFilters.getProviderByQOs(message, qosbean.getAllProviders());
}
}
public class QOSBean implements CustomBean {
@Autowired
private QOSFilters qosFilters;
@Autowired
private Branch dummyEmailProvider;
@Autowired
private Branch dummySMSProvider;
@Autowired
private Branch dummyVoiceProvider;
@Autowired
private Branch directSMSProvider;
@Autowired
private Branch everbridgeProvider;
@Autowired
private Branch mandrillProvider;
@Autowired
private Branch javaMailProvider;
public QOSFilters getQosFilters() {
return qosFilters;
}
public Branch getDummyEmailProvider() {
return dummyEmailProvider;
}
public Branch getDummySMSProvider() {
return dummySMSProvider;
}
public List<Branch> getAllProviders (){
return Arrays.asList(dummyEmailProvider, dummySMSProvider, dummyVoiceProvider, directSMSProvider, everbridgeProvider, mandrillProvider, javaMailProvider);
}}
https://stackoverflow.com/questions/25412642
复制相似问题