Spring中的@Autowired Annotation给我NullPointerException

时间:2017-08-23 11:00:08

标签: java spring

我试图在Spring中使用@Autowired Annotation进行依赖注入 通过一个简单的程序,但我给了我以下错误

Exception in thread "main" java.lang.NullPointerException
    at Customer.d(Customer.java:8)
    at Main.main(Main.java:12)

通过xml配置,它给我正确的结果。

我的xml文件

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
  <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> 
  <bean id="person" class="Person">
    <property name="name" value="khan"/>
  </bean>
  <bean id="cust" class="Customer"></bean>
</beans>

客户类

public class Customer {
@Autowired  
private Person p;
 public void display(){
     System.out.println(p.getName());
 }
}

人类

public class Person {

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private String name;

}

主类

public class Main {
    public static void   main(String[] a) {

        Resource r=new ClassPathResource("SpringXml.xml");
        BeanFactory factory=new XmlBeanFactory(r);
        Customer c=(Customer)factory.getBean("cust");
        c.display();
    }

}

2 个答案:

答案 0 :(得分:2)

试试这个

public static void main(String[] args) throws Exception {
    ApplicationContext context= new ClassPathXmlApplicationContext("SpringXml.xml");
    Customer c = (Customer) context.getBean("cust");
    c.display();
}

答案 1 :(得分:0)

试试这个:

<bean id="person" class="com.yourpackage.Person">
  <property name="name" value="khan"/>
</bean>
<bean id="cust" class="com.yourpackage.Customer">
   <property name="p" ref="person"/>
</bean>

别忘了添加你的fullpath类包