Моя главная проблема заключается в том, что я могу использовать Reflection API и вызывать метод setter в своем классе пользовательских бинов. Но у меня есть только объекты UserBean. Я не знаю, какой метод установки вызывать. Я хочу извлечь всю информацию в моем объектном компоненте пользователя и вызывать соответствующий метод, используя Reflection.
// -> Этот класс бина "Мой пользователь"
public class User {
private String name;
private int age;
private String getName() {
return name;
}
private void setName(String name) {
this.name = name;
}
private int getAge() {
return age;
}
private void setAge(int age) {
this.age = age;
}
void callMethod() { System.out.println("Name :- "+name+" Age :-"+age); }
@Override
public String toString() { return "User [name=" + name + ", age=" + age + "]";}
}
// ---> Это мой главный метод
public class TestCase {
public static Object getBean(String beanClassName) throws Exception
{
Class klass = Class.forName(beanClassName);
Object obj = klass.newInstance();
Method[] b = klass.getDeclaredMethods();
String MethodName1 = "setName";
String MethodName2 = "setAge";
String name ="sanket";
int age = 21;
for(int i=0;i<b.length;i++)
{
if(b[i].getParameterTypes().toString().equals(MethodName1))
{
b[i].setAccessible(true);
b[i].invoke(obj,name);
}
if(b[i].getName().equals(MethodName2))
{
b[i].setAccessible(true);
b[i].invoke(obj,age);
}
}
return obj;
}
public static void main(String ars[]) throws Exception
{
Object obj1 = getBean("www.Fouth.User");
System.out.println(obj1.toString());
}
}
В моем случае я могу вызвать метод установки вручную, потому что я могу вызвать основы метода установки имени метода.
Я хочу извлечь информацию из класса пользовательских бинов и определить на основе значения, какой установщик вызывается.
Весной @AutoWired это делает. Как они определят, какой установщик вызывать и вводить зависимость.