1. 属性注入(最常用的方式)
1.1. 通过 setter 方法注入Bean 的属性值或依赖的对象
1.2. 使用<property>元素, 使用 name 属性指定 Bean 的属性名称,value 属性或 <value> 子节 点指定属性值
<bean id="hq1" class="com.chai.demo1.HelloSpring">
<!--
注意:name属性的值 为当前类中setter方法的名称。
setName2(String name) 假如方法叫setName2 那么name="name2" 也应该填写name2
-->
<property name="name" value="你好..."></property>
</bean>
2. 构造器注入
2.1 通过构造方法注入Bean 的属性值或依赖的对象,它保证了 Bean 实例在实例化后就可以使用
2.2 构造器注入在 <constructor-arg> 元素里声明属性, <constructor-arg> 中没有 name 属性
<bean id="p1" class="com.chai.lesson2.Person" scope="prototype">
<constructor-arg value="小李" index="0"></constructor-arg>
<constructor-arg value="18"></constructor-arg>
</bean>
<bean id="p2" class="com.chai.lesson2.Person">
<constructor-arg value="jack" index="0"></constructor-arg>
<constructor-arg type="int">
<value>14</value>
</constructor-arg>
</bean>
Tip:
- value:表示你要注入的属性的值
- index 表示参数下标
- type 指定类型
- scope 属性(表示bean的作用域) 可以通过执行springIOC容器来创建对象 的类型
- prototype 原型模式(多例模式) 每次调用IOC容器的getBean方法,就会返回一个新的对象(地址)
- singleton 单例模式 每次调用都会返回同一个对象