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);
我正在尝试测试 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");
编辑:
用名字
创建另一个Classpublic 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);