我有一个原型bean,可以在构造函数中自动装配bean:
@Component
@Scope("prototype")
public class MyClass {
// Autowired annotation not needed in Spring 5
public MyClass(UserRepository userRepository) {
}
}
这个bean是用:
创建的MyClass myClass = beanFactory.getBean(MyClass.class);
这一切都很顺利。但是现在我想在创建bean时包含一个参数:
MyClass myClass = beanFactory.getBean(MyClass.class, "just-a-string");
// Bean constructor:
public MyClass(String str, UserRepository userRepository) {
}
但是这会导致以下错误:
使用名称' myClass'创建bean时出错...无法解析匹配的构造函数(提示:为简单参数指定索引/类型/名称参数以避免类型歧义)
我应该如何将构造函数依赖注入与简单参数结合起来?
修改
如错误所示,未找到匹配的构造函数。当我使用它创建bean时:
MyClass myClass = beanFactory.getBean(MyClass.class, "just-a-string", null);
bean创建成功,但当然我以后会得到一个空指针。
修改2
如果我使用现场注射,这种情况将被避免,但据我所知,不鼓励现场注射:
@Autowired
UserRepository userRepository
public MyClass(String str) {
}