junaid Khan
junaid Khan

Reputation: 27

@Autowired Annotation in Spring give me NullPointerException

I am trying to use @Autowired Annotation in Spring for Dependency Injection through a simple program but i give me following error

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

Through xml configuration it give me correct result.

My xml file

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

Customer Class

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

Person Class

public class Person {

    public String getName() {
        return name;
    }

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

    private String name;

}

Main Class

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

}

Upvotes: 2

Views: 153

Answers (2)

Thomas.L
Thomas.L

Reputation: 331

Try like this

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

Upvotes: 2

Gusti Arya
Gusti Arya

Reputation: 1301

try this :

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

dont forget to add your fullpath class package

Upvotes: 0

Related Questions