将Spring构造函数依赖注入与简单参数结合使用

时间:2018-02-01 14:19:53

标签: java spring dependency-injection spring-bean

我有一个原型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) {
}

0 个答案:

没有答案