接下来详细总结一下Bean标签的使用:
这是一个简单的Bean配置,里面有一个 name属性:
name属性:表示对象名
也有人使用id属性,id属性也是表示对象名,那么id和name功能一样,她们有什么不同呢?
id属性:对象名不可重复,不能使用特殊字符。而name属性:可以使用特殊字符。
class属性:对象的完整类名(你要把类告诉spring,spring才能帮你创建出对象,就是这个意思了)
scope属性:有两个参数选择:
singleton:表示已单例的方式去创建对象(spring的默认选择)
prototype:每次问spring要对象,spring都会创建一个新的对象给你。
init-method属性:对象创建完成后,执行一个方法。
这里我给一个toString参数,让他执行一个toString方法。
这User类中重写toString方法,加上一句打印“我toString执行了”。
对象创建之后,就会执行了 init-method属性中指定的方法。
-----------------------------------------
destroy-method属性:对象销毁前执行的方法。
我在User类中写一个aa方法,然后让她销毁对象,看会不会执行aa方法。
结果是,aa方法执行了。
-----------------------------------------
Bean对象的属性注入
对象能创建,当然就要为对象的属性赋值啦。
首先有通过构造方法注入属性值:
bean标签的内部标签中有constructor-arg标签
name属性:构造器参数名
value:赋值
ref:引用
type:参数类型
index:第几个参数
有了这几个属性就可以准确的选择到对应的构造方法了。
-----------------------------------------
通过set方法对属性注入:
bean标签的内部标签中有property标签。
property有三个属性:
name属性:对象的属性名
value属性:赋值
ref属性:引用
例如:我配置的一个user对象,给属性name赋值“小明”,age属性赋值“18”,phone属性是一个对象类型的,所以我又配置了一个phone对象,然后引用到user的phone属性上。
测试:我只需获取user对象,spring就已经把phone对象注入到了user的phone属性中了。
-----------------------------------------
数组类型的赋值方式:
-----------------------------------------
List集合的赋值方式:
-----------------------------------------
Map集合的赋值方式:
-----------------------------------------
properties的注入方式: