Java 结合Spring构造函数依赖项注入和简单参数

Java 结合Spring构造函数依赖项注入和简单参数,java,spring,dependency-injection,spring-bean,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(

我有一个在构造函数中自动连接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时出错。。。无法解析匹配的构造函数(提示:为简单参数指定索引/类型/名称参数以避免类型歧义)

如何将构造函数依赖项注入与简单参数结合起来

编辑

如错误所示,找不到匹配的构造函数。当我使用它来创建to bean时:

MyClass myClass = beanFactory.getBean(MyClass.class, "just-a-string", null);
bean创建成功了,但是我稍后当然会得到一个空指针

编辑2

如果我使用现场注入,这种情况将被避免,但据我所知,现场注入是不被鼓励的:

@Autowired
UserRepository userRepository

public MyClass(String str) {
}

在application.properties中声明此字符串,然后使用
@Value
在MyClass中获取它。然后,您不需要传递任何字符串。我已经阅读了@Value选项,但我希望每个原型bean的字符串值都不同;你从哪里打电话给getBean?你能把那个密码写出来吗。您可以在该类中自动连接userRepository并将其传递给getBean