[英]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.