一、作用域
bean 的作用域通过设置<bean>标签中的scope 属性来实现,在web模式下有四种值
prototype 非单例的
singleton 单例的
request
sesscion
applicationContext.xml代码如下
<bean id="phone" class="springioc9.ApplePhone" lazy-init="true" scope="prototype">
<property name="brand" value="apple"></property>
<property name="cpu" value="A12"></property>
<property name="price" value="5999"></property>
<property name="size" value="4"></property>
</bean>
二、继承配置
继承配置可以方便我们少写一些重复性的代码,
这里要注意父类 要添加一个属性abstract 并设置为true;
applicationContext.xml 代码如下
<bean id="fatherPhone" abstract="true">
<property name="size" value="5"></property>
<property name="cpu" value="A13"></property>
</bean>
<bean id="applePhone" class="springioc9.ApplePhone" parent="fatherPhone">
<property name="brand" value="apple"></property>
<property name="price" value="6999"></property>
</bean>
<bean id="miPhone" class="springioc9.MiPhone" parent="fatherPhone">
<property name="brand" value="xiaomi"></property>
<property name="price" value="4999"></property>
</bean>
三、自动装配
Ioc 容器可以根据bean的名称,bean的类型,构造方法自动进行注入,称之为自动装配
实现方式 通过在<bean>标签中添加属性 autowire
autowire 有四种值
- defaule 默认方式 不会自动注入
- by name 找同名的bean,准确的说是set方法的名称
- by type 根据属性的类型 如果有连个就抛出异常
- constructor 根据构造方法 同时根据 byname 在根据bytype 查找
下面代码如下所示
<bean id="springBean2" class="springioc10.SpringBean" scope="prototype" autowire="byName"></bean>
<bean id="otherBean2" class="springioc10.OtherBean">
<property name="name" value="otherBean2"></property>
</bean>
/* 对应的Java中SpringBean的set方法应为 */
public void setOtherBean2(OtherBean otherBean2) {
this.otherBean2 = otherBean2;
}