XML配置里面的Bean自动装配
Spring IOC容器可以自动装配Bean,需要做的仅仅是在<bean>
的autowire
属性里指定自动装配的模式。
-
byType
(根据类型自动装配)
若IOC容器中有多个与目标Bean类型一致的Bean,在这种情况下,Spring将无法判断哪个Bean最适合该属性,所以不能执行自动装配。 -
byName
(根据名称自动装配)
必须将目标Bean的名称和属性名设置的完全相同。 -
constructor
(通过构造器自动装配)
当Bean中存在多个构造器时,此种自动装配方式将会很复杂,我们不推荐使用。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="car" class="com.spring.autowire.Car" p:brand="Audi" p:price="300000"></bean>
<bean id="address" class="com.spring.autowire.Address" p:city="BeiJing" p:street="HuiLongGuan" ></bean>
<!-- 可以使用autowire属性指定自动装配的方式-->
<!-- byName根据bean的名字和当前bean的setter风格的属性名进行自动装配若有匹配的,则进行自动装配;若没有匹配的,则不装配-->
<bean id="person" class="com.spring.autowire.Person" p:name="Tom" autowire="byName"></bean>
</beans>
上述的配置,person
的car
属性和address
属性就会根据上面定义的两个bean(名字与person
中的setter
方法名字一样)来进行自动装配,如果名字不一致那就不会装配。
网友评论