在我的应用程序中,我想按需实例化一个类并将一些运行时参数传递给 is 以及让 Spring 自动满足任何@Autowired
依赖项。例如,我想按需实例化的类:
@Service
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class FileProcess implements Runnable
{
@Autowired
private MyDAO myDAO;
private String configOne;
private String configTwo;
@Override
public void run()
{
}
}
该对象myDAO
已经存在于 ApplicationContext 中,我希望 Spring 为我实现这种依赖关系。事实上,这个类的任何实例都不应该真正知道它的内部结构FileProcess
,它只需要配置参数configOne
和configTwo
要获得一个实例,FileProcess
我使用了 的getBean()
方法,ApplicationContext
但我无法仅传递配置参数:
final FileProcess fileProcess = this.applicationContext.getBean(FileProcess.class, configOne, configTwo)
这会导致错误:
Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities
我发现无论我添加什么构造函数,FileProcess
我都会得到相同的错误。我只想传递配置参数而不是,在这种情况下不是MyDAO
. 同样,必须传入 MyDAO 的实例意味着调用者必须了解此类 bean 的内部结构,FileProcess
并且通常必须了解此类 bean 的范围。
有没有一种方法可以实现这一点而不必求助于@Configuration
类和带@Bean
注释的方法?