Getter 方法在 Spring DI 中返回空值

Getter Method retuning null value in Spring DI

我正在尝试测试 Spring 依赖注入功能,但是 运行 在尝试使用 Spring Bean 的 getter 方法检索实例变量的值时遇到问题 class。获取先前设置的实例变量的空值。

我的主Class

public class Main {
public static void main(String ... args) {

    ApplicationContext context = new ClassPathXmlApplicationContext("BeanFactory.xml");
    IBackup dataWriterObj = (IBackup) context.getBean("writeBackupHDFS");
    backup backup = new backup();
   backup.setNickName("Abbey");
    String result = dataWriterObj.read("Ankur", "Bahre");
System.out.println(result);
}
}

豆子Class

public class backup implements IBackup {
private String nickName;

public String getNickName() {
    return nickName;
}

public void setNickName(String nickName) {
    this.nickName = nickName;
}

public String read(String firstName, String lastName) {
    String Name = "My Name is " + firstName + " " + lastName + " and my nickName is "  + getNickName();
    return Name;
}
}

界面

public interface IBackup {

public String read(String firstName, String lastName);
}

BeanFactory.xml

<bean id="writeBackupHDFS" class="test.backup"/>

预期输出- My Name is Ankur Bahre and my nickName is Abbey

实际输出- My Name is Ankur Bahre and my nickName is null

任何人都可以告诉我我缺少什么吗?

谢谢

使用 dataWriterObj.setNickName("Abbey") 而不是 backup.setNickName("Abbey")

因为下面的代码与dataWriterObj对象没有关系。

   backup backup = new backup();
   backup.setNickName("Abbey");

编辑:

用名字

创建另一个Class
public class Name {
    private String nickName;

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }
}

使用上述更改更新备份 class

public class backup implements IBackup {

    @Autowired
    Name nameObj;   

    public void setNameObj(Name nameObj) {
        this.nameObj = nameObj;
    }

    public String read(String firstName, String lastName) {
        String Name = "My Name is " + firstName + " " + lastName + " and my nickName is "  + nameObj.getNickName();
        return Name;
    }
}

将其添加到配置文件BeanFactory.xml:

 <bean id="writeBackupHDFS" class="springboot.rest.backup">
            <property name="nameObj" ref="nameBean"/>
           </bean>
<bean id="nameBean" class="springboot.rest.Name"/>

现在用下面的代码更新主要方法

    ApplicationContext context = new ClassPathXmlApplicationContext("BeanFactory.xml");
        IBackup dataWriterObj = (IBackup) context.getBean("writeBackupHDFS");
        Name nameBean = (Name) context.getBean("nameBean");
     //   backup backup = new backup();
        nameBean.setNickName("Abbey");
        String result = dataWriterObj.read("Ankur", "Bahre");
    System.out.println(result);