Динамическая передача параметров для Spring Dependency Injection с использованием context.getBean(String, args)
Я хочу передавать значения в свойства класса Bean динамически, когда я пытаюсь создать объект bean, но сталкиваюсь с трудностями при определении файла конфигурации Spring. Вот код пока
Основной класс
package test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String ... args) {
ApplicationContext context = new ClassPathXmlApplicationContext("BeanFactory.xml");
IBackup dataWriterObj = (IBackup) context.getBean("writeBackupHDFS","abbey");
String result = dataWriterObj.read("A", "B");
System.out.println(result);
}
}
Интерфейсный класс
package test;
public interface IBackup {
public String read(String firstName, String lastName);
}
Класс реализации
package test;
public class backup implements IBackup {
private Name name;
public backup(Name name, String nickName) {
this.name = name;
}
public String read(String firstName, String lastName) {
String Name = "My Name is " + firstName + " " + lastName + " and my nickName is " + name.nickName;
return Name;
}
}
Боб Класс
package test;
public class Name {
public String nickName;
public Name(){
System.out.println("Inside Name class constructor");
}
public Name(String nickName) {
this.nickName = nickName;
System.out.println("Name class nickName : " + nickName);
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
}
BeanFactory.xml
<context:component-scan base-package="test" />
<bean id="writeBackupHDFS" class="test.backup">
<constructor-arg ref="name"></constructor-arg>
</bean>
<bean id="name" class="test.Name"></bean>
</beans>
То, что я ищу, - это использовать Dependency Injection, динамически передавая значение свойству nickName класса Name с помощью context.getBean("writeBackupHDFS","abbey");
Я пытался установить свойство тега name bean, но не смог заставить работать код. Я также добавил пустой тег значения в конструктор-аргумент класса bean, но он устанавливает пустое значение для свойства nickName.
Любая помощь в том, как установить свойства бина динамически, а не в жестком коде в BeanFactory.xml, высоко ценится.
Также найдите ниже ожидаемого выхода
Ожидаемый результат - "Меня зовут A B, а мой ник - abbey"