在我的项目中,超过1000个bean类是他们的。我需要使用setter方法或构造函数将数据设置为这些类来创建对象。
我正在使用spring
来创建对象。使用以下代码。我可以创建一个对象。
Object obj = (Object) appContext.getBean("CustomerBean");
obj.setId(1); //showing error
但我无法将值设置为特定的CustomerBean
类。要设置值,它要求我像这样更改代码。
CustomerBean obj = (CustomerBean) appContext.getBean("CustomerBean");
obj.setId(1);
我有超过1000个班级,每个班级有5到10个变量。所以请建议我一个更好的方法来动态地为所有bean设置一个值。
提前致谢。
答案 0 :(得分:0)
所有bean都可以从父类扩展,其属性设置或使用反射从Spring接收后为字段分配值:
import java.lang.reflect.Field;
public class Executor {
public static void main(String[] args) throws Exception {
TestClass testClass = new TestClass();
setValueToObject(testClass, "stringField", "someValue");
setValueToObject(testClass, "booleanField", true);
System.out.println(testClass.getStringField());
System.out.println(testClass.getBooleanField());
}
private static void setValueToObject(TestClass testClass, String filedName,
Object value) throws Exception {
Class objectClass = testClass.getClass();
Field field = objectClass.getDeclaredField(filedName);
field.setAccessible(true);
if (field.isAccessible()) {
field.set(testClass, value);
}
}
static class TestClass {
private String stringField;
private Boolean booleanField;
public String getStringField() {
return stringField;
}
public void setStringField(String stringField) {
this.stringField = stringField;
}
public Boolean getBooleanField() {
return booleanField;
}
public void setBooleanField(Boolean booleanField) {
this.booleanField = booleanField;
}
}
}
请注意,除非明确指定,否则bean将转到Singleton
范围。您可以按this document中提到的那样更改bean范围。
答案 1 :(得分:0)
这是违反OOPs的概念。您不能调用/访问未在父(此处为Object)类中定义的方法/属性。 Object类没有" setId()"方法
试试这个(已编辑))
只需创建一个Interface ValueSet { void setValueToVariables();}
,然后在ValueSet中实现所有bean。 Class CustomerBean implements ValueSet
现在你可以实现setValueToVariables()。更改对象类,即ValueSet obj = (ValueSet) appContext.getBean("CustomerBean");
obj.setId(1);