spring 属性注入

发布于 2022-09-06 07:46:52 字数 1736 浏览 13 评论 0

图片描述

配置文件如上图

CDPlayer 代码:
package springdemo;

import org.springframework.beans.factory.annotation.Autowired;

public class CDplayer {

private CD cdd;
@Autowired
public void setCdd(CD c){
    this.cdd=c;
}
public void play(){
    System.out.println(cdd);//跟踪cdd输出是null
        cdd.play();
}


}

测试代码:
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import springdemo.CDplayer;

public class CDtest {

@Test
public void goCd(){
    ClassPathXmlApplicationContext ct = new ClassPathXmlApplicationContext("application.xml");
    CDplayer cp =(CDplayer) ct.getBean("cp");
    cp.play();
}

}
怎么一直报空指针异常搞不明白,

@Autowired
public void setCdd(CD c){
    this.cdd=c;
} 这个方法不是已经把CD注入进来了吗? 按理说下面调用cdd的时候不应该为空啊,新手刚接触  实在困惑

直接这样写:
public class CDplayer {

@Autowired
private CD cdd;


public void play(){
    System.out.println(cdd);//得到还是为空的
        cdd.play();
}

}
或者这样:
图片描述public class CDplayer {

private CD cdd;

public void play(){
    System.out.println(cdd);
        cdd.play();
}

}

为什么换成下面的代码就可以了?配置文件xml是上面 cdd报红色错误的这个配置
public class CDplayer {

private CD cdd;

@Autowired
public void setCdd(CD c){
    this.cdd=c;
}
public void play(){
    System.out.println(cdd);
        cdd.play();
}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

和影子一齐双人舞 2022-09-13 07:46:52

谢邀,因为你的注入是通过注解实现的,所以应该在配置文件中显示声明<context:annotation-config />

软糖 2022-09-13 07:46:52

p小写了。。。注意看黄色的警告提示。


题主更新了。
注入改成这个
@Autowired("cd")
private CD cdd;

毁梦 2022-09-13 07:46:52
@Component
public class CDplayer {

加上@Component再尝试尝试

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文