Динамическая передача параметров для 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"

0 ответов

Другие вопросы по тегам