一、两种依赖写法
<bean id="bean2" class="***">
<property name="bean3" ref="bean3"/> //第一种写法:这个意思是bean2类依赖了bean3,bean2的java类文件里,有private bean3 bean3.
<property name="bean4"> //这是第二种写法
<ref bean="bean4">
</bean>
<bean id="bean3" class="***">*****
二、default-lazy-init属性
延迟加载bean的东西,比如,我加载的时候没有用得到bean1,那么就不会加载bean1的东西。也就是用到什么加载什么。
三、抽象类--abstract="true"(优化1:配置项少写)
如果我的2个类里面有相同的属性,那么在配置的时候,我可以定义一个抽象类来配置,这样可以少些的配置项。
抽象类:
<bean id="AbstractBean" abstract="true">
<property name="id" value="100">
//这是把公共的属性拿出来。
</bean>
子类怎么用呢?
//如果子类没有自己多余的属性,这样用
<bean id="bean2" class="***" parent="AbstractBean"/>
//如果子类有自己的属性
<bean id="bean3" class="**" parent="AbstractBean">
<property name="age">
<value>90</value>
</property>
</bean>
四、继续优化--自动装配(优化2:配置项都不用写)
1、根据名称完成自动装配
上述写法中,少写了配置项,用了一个抽象类,但是在这里,如果我们引用了别人(bean2里面用到Bean3的时候),直接自动装配即可!
如何根据名称自动装配:
配置文件:加default-autowire="byName"
前提是:
.java 文件中的public void setBean2(Bean3 bean3){this.bean3=bean3;} 这里的set后面的Bean2必须和配置文件中的<bean id="bean3" class="**">和这里的id名字一样才可以!
2、根据类型自动装配
default-autowire="byType"
这里的前提条件就是只要class后面一致就可以,不用id名称一致。