Spring:使用@Component进行注解

问题描述如下:在HOW2J.CN网站学习Spring的过程中,遇到一个小问题。代码非原创

1.首先建立java项目,然后在src中建立两个包,一个写bean类,一个写测试类。建立applicationContext.xml配置文件。导入jar包。

2.此处主要说明自己所遇到的问题,关键代码如下:

applicationContext.xml

    <context:component-scan base-package="com.how2java.pojo"/>
    

Product类(有问题的地方):

@Component("p")//为Product类加上@Component注解,即表明此类是bean
public class Product {

    private int id;
    private String name = "pro 1";

    private Category category;
    //此处有问题。申明该变量,运行测试类,报错。 
    public Category getCategory() {
        return category;
    }

    public void setCategory(Category category) {
        this.category = category;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

Category类

@Component("c")//为Category 类加上@Component注解,即表明此类是bean 
public class Category {

    private int id;
    private String name ="cate 1";
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

}

测试类:public class TestSpring {

public class TestSpring {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(
                new String[] { "applicationContext.xml" });

        Product p = (Product) context.getBean("p"); 
        System.out.println(p.getName());    
        System.out.println(p.getCategory().getName);   
    }
}

上面报错信息为:

Exception in thread "main" java.lang.NullPointerException
    at com.how2java.test.TestSpring.main(TestSpring.java:16)

改掉测试类TestSpring中的代码:

System.out.println(p.getCategory().getName);

为:

System.out.println(p.getCategory());

发现结果为:null.
说明p.getCategory()指向为空。
然后我将Product类中的private Category category; 改为:

private Category category = new Category();

结果显示正确:
pro 1
cate 1

你可能感兴趣的:(个人学习心得)