您的位置:首页 > 编程语言 > Java开发

Spring:使用@Component进行注解

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

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

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

applicationContext.xml

<context:component-scan base-package="com.how2java.pojo"/>
<!-- 其作用是告诉Spring,bean都放在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring java