如何解决动态依赖注入弹簧
| 我班上有以下代码public void startListeners() throws Exception {
List<QueueConfiguration> queueConfigs = queueConfigResolver.getQueueConfigurations();
for(QueueConfiguration queueConfig : queueConfigs){
//TODO : work on this make it more testable
ICustomListener readerListener = new MyCustomListener(queueConfig);
readerListeners.add(readerListener);
readerListener.start();
}
}
我正在使用Spring进行依赖项注入(不是在这种情况下,而是整体)。现在此代码有两个问题。
在测试时,我无法为创建的每个侦听器放置模拟。
我不想使用ApplicationContext.getBean(),因为它会产生相同的影响。 AFAIK spring无法动态执行此操作,但是还有其他指针吗?
解决方法
据我了解,您想创建一个新bean而不是
ICustomListener readerListener =新的MyCustomListener(queueConfig);
如果是这种情况,请为mycustomlistener创建工厂并使用
public abstract TestClient createTestClient();
创建您的bean,并定义
<bean id=\"testClient\" class=\"com.myproject.testbeans.TestClient\" scope=\"prototype\">
</bean>
<bean id=\"testClientFactory\" class=\"com.myproject.testbeans.TestClientFactory\">
<lookup-method name=\"createTestClient\" bean=\"testClient\" />
</bean>
在您的上下文中会解决您的问题。这样,每次调用工厂的createTestClient方法时,都会创建一个新bean并将其提供给您的代码。但是,您必须通过设置器(而不是构造函数)提供config对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。