IOC容器赋值
1. 如果是简单类型(8个基本类型+String)
2. 如果是对象类型
ref="要引用的id值",因此实现了对象与对象之间的依赖关系
依赖注入的三种方式:
1.set方式的依赖注入:
上面的<BEAN>里面有属性的复制,其实就是创建对象,然后.set去set值一样,
如何根据<bean>中的name属性找到类中的方法呢?
其实这里用的是反射,步骤如下:
(1)先根据name去拼接要找的set方法,
(2)然后使用反射技术在类中去找有没有这个方法
2.构造器注入
通过构造方法赋值
bean里面的赋值顺序和构造方法参数的顺序保持一致,因为在bean里没有明确指定要赋值给哪些变量。
如果顺序不一致,可以使用index来进行指定
用name(参数名)来指定也可以
如果构造参数的类型不同,可以使用类型来进行指定。
p命名空间来进行注入
p命名空间
头部加p命名空间
总结:
p命名空间的顺序无影响
注意多个p赋值的时候,要保留空格。
对于构造方法,如果容器中只有一个参数,但是却有多个构造方法,该传值给谁呢?
由打印结果可以看出,33赋值给了老师的字段
如果这样写,那就默认当成字符串了
可以使用上面的方法来进行区分,比如type=int
这样就不会给老师的字段赋值了
通过spring IOC容器给集合赋值
给list集合赋值
给数组赋值:
给set赋值
集合的三个:set ,list,array都可以使用list,即将bean中的set和array都换成list也可以正常赋值。
map赋值:
给property赋值
从容器中拿相应的bean