簡體   English   中英

Getter方法在Spring DI中重新調整空值

[英]Getter Method retuning null value in Spring DI

我正在嘗試測試Spring Dependency Injection功能,但是在嘗試使用Spring Bean類的getter方法檢索實例變量的值時遇到了問題。 獲取先前設置的實例變量的空值。

我的主班

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);
}
}

豆類

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");

編輯:

用名稱創建另一個類

public class Name {
    private String nickName;

    public String getNickName() {
        return nickName;
    }

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

通過以上更改更新備份類

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;
    }
}

將其添加到conf文件BeanFactory.xml中:

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

現在用下面的代碼更新main方法

    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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM