Spring在这里需要一些帮助。在我们的项目中,我们使用XML和注释配置(Spring 4.1) 最近我遇到了以下任务:
我有一个范围原型的bean列表,它们都实现了相同的接口。
此外,我有一个单独的bean,它有< code>execute方法。在方法内部,bean应该访问这些原型bean的列表。
每次执行“execute”方法时,我都想访问这些原型bean的不同实例)。在singleton中,我没有预先知道的所有bean列表,所以我只是@Autowire
整个集合,以便加载应用程序上下文中已知的每个bean实现。
interface SomeInterface {
}
class PrototypeBean1 implements SomeInterface {
...
}
class PrototypeBean2 implements SomeInterface {
...
}
class MySingletonBean {
@Autowire (????)
List<SomeInterface> allPrototypeBeansLoadedIntoTheApplicationContext;
public void execute() {
// this one is called many times,
// so I would like to get different lists of
//"allPrototypeBeansLoadedIntoTheApplicationContext"
// with different actuals bean upon every invocation
// how do I achieve this???
}
}
所以我的问题是:实现这个最干净的方法是什么?理想情况下,我希望得到一个与spring接口完全解耦的解决方案(比如注入ApplicationContext/BeanFactory之类的东西)。我不介意在这里使用Aop(性能不是那么重要),但是我真的不能接受一个干净的spring解决方案。所以任何帮助都会被感激。
先谢谢了
我一直在尝试使用Spring来实现类似的目标,在阅读了使用ServiceLocatorFactoryBean或方法注入(使用@Lookup)的Spring文档后,出现了并看起来很有希望。然而,经过尝试,两种方法的结果都令人沮丧。这两种方式都不支持在List中返回bean。我得到了这个例外:
没有“java.util.List”类型的合格bean可用
显然Spring将返回类型视为常规Object。
因此,最终我的解决方案是创建一个新对象,将列表包装为返回类型。
@Component
@Scope("prototype")
public class ProcessorList
{
private List<Processor> processors;
public ProcessorList(List<Processor> processors)
{
this.processors = processors;
}
public List<Processor> getProcessors()
{
return processors;
}
public void setProcessors(List<ChangeSetProcessor> processors)
{
this.processors = processors;
}
}
然后为列表对象创建一个工厂类:
@Component
public interface ProcessorFactory
{
ProcessorList getProcessorList();
}
然后使用 ServiceLocatorFactoryBean 注册工厂:
@Configuration
public class MyConfiguration{
@Bean
public FactoryBean serviceLocatorFactoryBean()
{
ServiceLocatorFactoryBean factoryBean = new ServiceLocatorFactoryBean();
factoryBean.setServiceLocatorInterface(ProcessorFactory.class);
return factoryBean;
}
}
最后实现接口并确保用@Scope(“原型”)标记它们
现在,每次使用工厂方法时,您都会获得新实例!
如果您愿意,它类似于使用方法注入。
我刚接触Spring,正在尝试理解“将一个原型bean注入一个单例bean”的概念。根据我在singleton中的理解,每个Spring IoC容器只有一个实例,不管您检索它多少次。,因为仍未实例化。我开发了以下示例,其中在单个bean中给出了原型bean的参考,如下所示: RequestProcessor.java requestValidator.java 如何解决?我的理解正确吗? 另一种方
我使用和注释来注入一个原型bean。 然而,注入bean的行为类似于单例bean。有没有办法在mockito中注入一个原型范围bean? 我正在使用运行JUnit,并使用运行初始化模拟。
我正在使用Spring3中的查找方法注入将原型bean注入到单例bean中,如这里的Spring文档中所述。在我的原型bean中,我对ApplicationContext.xml中声明的另一个bean有依赖关系。查找方法注入似乎工作正常,因为我的原型bean被注入到我的单例bean中,然而,原型的依赖项根本没有被注入。当通过查找方法返回原型时,依赖关系是否可以以正常的方式注入到原型bean中?如果
我有一个用于原型bean的FactoryBean,如下所示: 我希望在控制器中自动连接它,并且每当我尝试访问属性时(通过,从获得一个新的原型实例: 但是,这从来不会调用getObject()。如果我注入ApplicationContext一个直接访问bean,它就会工作,提供一个全新的属性bean: 如何直接使用@autowired注入来实现?
我有两节课 还有一个雇员类 在我的控制器中,我从服务层检索数据,并尝试填充部门。这就是我的控制器的样子。 过去,如果我使用new关键字为CDI管理的bean构造实例,我会遇到麻烦。我可以使用new创建一个ArrayList,使用new构造Employee实例,将它们添加到列表中,然后在departmentbean中设置列表。有人能告诉我在ManagedBean部门填充员工(ManagedBean)
我有一个Spring bean,在Spring Bean中我有一个对其他bean列表的依赖项。我的问题是:如何注入一个通用的bean列表作为该bean的依赖项? 例如,一些代码: 我的豆子: 问题是:;如何在Painter中获得颜色列表?另外,还有一点:我应该让@Configuration返回接口类型还是类? 谢谢你的帮助!