如何在运行时使用动态参数初始化Spring bean,而不是原型bean?

时间:2018-05-16 11:52:13

标签: java spring

我尝试使用请求范围初始化Spring bean,以及从不由Spring管理的另一个对象(属性)进行延迟初始化。 这是bean的定义:

@Component
@Scope(value = "request")
@Lazy
public class LazyClass {

 protected String name;

}

如何创建名称'属性在运行时?

1 个答案:

答案 0 :(得分:-1)

这可能不是最佳解决方案,但您可以将name的值设置为System属性,并将其放在您班级中所需的位置。

在非spring类中的某处设置值:

// myProperty is the name of the property
// name is the value you want to store
System.setProperty("myProperty",name);

进入你的班级:

// Caution: the name of the property must be the same as it was when it was set
String name = System.getProperty("myProperty);

可以在bean类的构造函数中调用get方法,因为它被标记为@Lazy

编辑:

另一种方法是为字段name创建一个setter,并在需要时设置其值。