自动装配有三种方式(实际开发中很少使用),使用autowire装配
1.byType根据类型自动装配,如果IoC容器中有多个相同类型的bean无法具体判断
2.byName根据名称自动装配
3.constructor不推荐
<!-- 通过构造器方式配置bean --> <bean id="car" class="com.hous.spring.Car"> <constructor-arg value="pasate" index="0"></constructor-arg> <constructor-arg value="shanghai" index="1"></constructor-arg> <constructor-arg value="300000" type="double"></constructor-arg> </bean> <bean id="address" class="com.hous.spring.Address" p:city="suqian" p:street="shuanghe"/> <!-- 会根据名称自动装配car和address --> <bean id="person" class="com.hous.spring.Person" p:name="box" p:age="28" autowire="byName" />
Bean的继承和依赖
spring允许继承父bean的配置,子bean可以覆盖父bean继承过来的属性,若只想把父bean做为模板,可以设置bean的abstract属性为true,若忽略父bean的class属性,则abstract属性必须为true
<bean id="address" p:city="suqian" p:street="shuanghe" abstract="true"/> <bean id="address2" class="com.hous.spring.Address" p:city="nanjing" parent="address"/>
spring允许使用depends-on属性设置bean的前置依赖bean,如果有多个依赖可以使用逗号或者空格分开
<bean id="address" class="com.hous.spring.Address" p:city="suqian" p:street="shuanghe"/> <bean id="person" class="com.hous.spring.Person" p:age="20" p:name="hous" depends-on="address"/>
bean的作用域singleton和prototype(request和session使用较少)
可以使用scope设置作用域
<!-- singleton:默认值,在容器初始化的时候创建,在整个bean的生命周期中只创建一次bean,单例的 prototype:容器初始化的时候并不创建bean的实例,每次请求的时候创建bean的实例并返回 --> <bean id="person" class="com.hous.spring.Person" p:age="20" p:name="hous" scope="prototype"/>