Rose3331847
慕神7268400
慕姐6232974
完整代码呢
qq_青菜白玉汤_1
A类中引用B类 ,在注入IOC容器的时候,B类成为A类的成员属性/或者构造传入
qq_解泼泼_0
依赖包在课程资源里有,所有的包可以在课程资源源码项目里面拷贝
用户1080741
抛出异常了吧,应该是构造函数中的appl.xml配置文件有可能不存在所以会报异常。捕获或者抛出一下异常就可以了
我是真的烦
流光一逝i
需要导入jar包的 包与包之间有依赖关系,如果不知道哪些包有依赖关系。最好用maven管理。这样会自动添加相关依赖的包。spring-core spring-context spring-context-surpport spring-beans
Hccz2z
你java编译器的JDK版本和项目的JDK版本不一致


慕斯0317179
类A{
成员变量B
},成员变量B实际是一个类B。这里要把类A中的成员变量B 赋值为类B。
不配置xml,就不能把类B的bean赋值给类A中的成员变量B,类A中的成员变量B=null。
配置了xml,就自动把类B的bean赋值给类A中的成员变量B,类A中的成员变量B=类B的实例对象。
qq_慕少8412815
查看你的bean组件的id名是否与getbean(id)方法的id一致。
慕丝7018676
\\s 表示空白符,包括空格符、换行符等等,这个可能和你配置的classpath有关
淋雨明天
是Spring不是String。其实目前你不用在意哪个版本,先学并了解原理,版本问题只是在上一个版本增加一些功能,知道自己用的版本有哪些功能就行了,实现方法不会有太大改变。
淋雨明天
qq_慕婉清0399649
可以慢不要停
pom只是在管理项目,不做启动工作,pom里面管理是引入的jar包、版本以及各个模块之间的依赖。前四章只是在用Junit测试的,给你个源码吧
public class UnitTestBase {
private ClassPathXmlApplicationContext context;
private String springXMLPath;
public UnitTestBase() {
}
public UnitTestBase(String springXMLPath) {
this.springXMLPath = springXMLPath;
}
@Before
public void before() {
if (StringUtils.isEmpty(springXMLPath)) {
springXMLPath = "classpath*:spring-*.xml";
}
try {
context = new ClassPathXmlApplicationContext(springXMLPath.split("[,\\s]+"));
context.start();
} catch (BeansException e) {
e.printStackTrace();
}
}
@After
public void after() {
context.destroy();
}
@SuppressWarnings("unchecked")
protected <T extends Object> T getBean(String beanId) {
return (T) context.getBean(beanId);
}
protected <T extends Object> T getBean(Class<T> clazz) {
return context.getBean(clazz);
}
}上面这个是Junit测试类的父类,你写的测试类集成它就行了
wayTG
要把报错信息贴出来啊
慕姐4925769
chenkaifan
要么就是加载xml文件的路径不对
chenkaifan
慕侠3558007
看视频中的写法,只要是执行一次@before和@after,容器就会被初始化打开和关闭一次。每次调用getBean方法前均执行一次before,结束后执行一次after,所以每次调用getbean方法时都加载的是新的ioc容器
慕桂英8304657
其实还好,学一下多少还是有点东西的
慕田峪5532335
使用junit测试时,先通过反射生成一个测试类对象。这个对象实例化之后,也就是jvm为他分配内存,他包含的oneinterface也分配好相应的内存大小,但是没有赋值,也就是null,因为这个时候还没有加载spring*.xml文件,无法解析@Resource标签。之后调用其构造函数,就像你的例子里面,这个时候才去为配置文件赋值为spring*.xml。通过测试类对象执行测试方法的时候先执行before,这个时候测试类对象被用,因为线程安全,加载spring*.xml文件并正确扫描到了测试类,但是无法为测试类对象注入,因为这块内存的读取是线程安全的,所以oneinterface还是null。个人理解
qq_点点_wCDIM9
看一下 你的 这个 配置文件 里面没有配好这个类 [file:/C:/Java%20EE/eclipse-workspace/Spring/bin/spring-ioc.xml]
qq_背离理想_0
在本课程里面:第2章 Spring IOC容器的第一节IOC及Bean容器,后半部分的视频就是介绍UnitTestBase的;
在资料下载中也有源码:5427bf120001c7b000000000\Spring\src\test\java\com\imooc\test\base
NemesisSun
你看看错误的提示是什么
慕娘6527991
我觉得这应该是因为我们在配置文件xml中对其进行了类型的说明,也就是我们的那个id进行了设置,得到的bean也就自然是我们设置的那个类型了吧。这是我瞎猜的
paulzhang
测试类继承了UnitTestBase测试基类,测试基类中有两个getBean方法,分别封装了容器的两个getBean方法获取Bean的过程,所以测试类中的super.getBean就是相应的调用父类中的那两个封装好的getBean方法,应该是这样子。
angui
测试类直接继承
AbstractJUnit4SpringContextTests来测试,不用那么麻烦
angui
不知道这个图是否对你们有帮助