Java 使用自动连线注释插入依赖对象时获取空指针异常
嗨,我是春天的新手,有人能帮我吗 问题-我正在使用Spring3.0,我需要使用AutoWire注释,我有2个bean 1) 雇员豆 2) 地址beanJava 使用自动连线注释插入依赖对象时获取空指针异常,java,spring,spring-annotations,Java,Spring,Spring Annotations,嗨,我是春天的新手,有人能帮我吗 问题-我正在使用Spring3.0,我需要使用AutoWire注释,我有2个bean 1) 雇员豆 2) 地址bean public class Employee { private String name ; private Long id; private String mobileNumber; @Autowired private Address address; public Employee() { System.out.println("
public class Employee {
private String name ;
private Long id;
private String mobileNumber;
@Autowired
private Address address;
public Employee() {
System.out.println("Default Constructor Employee class");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getMobileNumber() {
return mobileNumber;
}
public void setMobileNumber(String mobileNumber) {
this.mobileNumber = mobileNumber;
}
public void display() {
System.out.println("Name : "+getName());
System.out.println("ID : "+getId());
System.out.println("Name : "+getMobileNumber());
if(getAddress()!=null) {
getAddress().getAddressInfo();
}
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
====================================================秒=========================================
package com.as.autowire.setterinjection;
public class Address {
private String state;
private String city;
private String zip;
private String street;
public Address() {
System.out.println("Address Class Default constructor");
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
public void getAddressInfo() {
System.out.println("Street "+getStreet());
System.out.println("city "+getCity());
System.out.println("State "+getState());
System.out.println("zip "+getZip());
}
}
package com.as.autowire.setterinjection;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.*;
public class Test {
public static void main(String[] args) {
BeanFactory factory=new XmlBeanFactory(r);
Employee e=(Employee)factory.getBean("emp",Employee.class);
e.display();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<bean id="emp" class="com.as.autowire.setterinjection.Employee">
<property name="name"> <value>Shubham Goswami</value> </property>
<property name="id"> <value>12201</value> </property>
<property name="mobileNumber"> <value>9760063335</value> </property>
<!-- <property name="address" ref="address" /> -->
</bean>
<bean id="address" class="com.as.autowire.setterinjection.Address">
<property name="Street"> <value>Moh Firahadiyan Jwalapur</value> </property>
<property name="city"> <value>Jwalapur</value> </property>
<property name="state"> <value>Uttarakhand</value> </property>
<property name="zip"> <value>249407</value> </property>
</bean>
=====================================================================主类============================
package com.as.autowire.setterinjection;
public class Address {
private String state;
private String city;
private String zip;
private String street;
public Address() {
System.out.println("Address Class Default constructor");
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
public void getAddressInfo() {
System.out.println("Street "+getStreet());
System.out.println("city "+getCity());
System.out.println("State "+getState());
System.out.println("zip "+getZip());
}
}
package com.as.autowire.setterinjection;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.*;
public class Test {
public static void main(String[] args) {
BeanFactory factory=new XmlBeanFactory(r);
Employee e=(Employee)factory.getBean("emp",Employee.class);
e.display();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<bean id="emp" class="com.as.autowire.setterinjection.Employee">
<property name="name"> <value>Shubham Goswami</value> </property>
<property name="id"> <value>12201</value> </property>
<property name="mobileNumber"> <value>9760063335</value> </property>
<!-- <property name="address" ref="address" /> -->
</bean>
<bean id="address" class="com.as.autowire.setterinjection.Address">
<property name="Street"> <value>Moh Firahadiyan Jwalapur</value> </property>
<property name="city"> <value>Jwalapur</value> </property>
<property name="state"> <value>Uttarakhand</value> </property>
<property name="zip"> <value>249407</value> </property>
</bean>
==========================================================XML文件===========================
package com.as.autowire.setterinjection;
public class Address {
private String state;
private String city;
private String zip;
private String street;
public Address() {
System.out.println("Address Class Default constructor");
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
public void getAddressInfo() {
System.out.println("Street "+getStreet());
System.out.println("city "+getCity());
System.out.println("State "+getState());
System.out.println("zip "+getZip());
}
}
package com.as.autowire.setterinjection;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.*;
public class Test {
public static void main(String[] args) {
BeanFactory factory=new XmlBeanFactory(r);
Employee e=(Employee)factory.getBean("emp",Employee.class);
e.display();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<bean id="emp" class="com.as.autowire.setterinjection.Employee">
<property name="name"> <value>Shubham Goswami</value> </property>
<property name="id"> <value>12201</value> </property>
<property name="mobileNumber"> <value>9760063335</value> </property>
<!-- <property name="address" ref="address" /> -->
</bean>
<bean id="address" class="com.as.autowire.setterinjection.Address">
<property name="Street"> <value>Moh Firahadiyan Jwalapur</value> </property>
<property name="city"> <value>Jwalapur</value> </property>
<property name="state"> <value>Uttarakhand</value> </property>
<property name="zip"> <value>249407</value> </property>
</bean>
Shubham Goswami
12201
9760063335
莫赫·菲拉哈迪扬·贾瓦拉普尔
Jwalapur
北方汗国
249407
当我运行这个程序时,我得到的地址对象总是空的
o/p为-
默认构造函数员工类
姓名:Shubham Goswami
ID:12201
名称:9760063335
但是这里我没有得到地址属性,因此任何人都可以在这个XmlBeanFactory上帮助不要注册AutowiredNotationBeanPostProcessor,并且在这种情况下,
被忽略。使用任何ApplicationContext代替BeanFactory。或者,您可以手动注册所需的后处理器。尝试从员工
中删除地址
getter和setter。设置null
时可能存在冲突。是,它与应用程序上下文一起工作