NO.8 Spring IOC 依赖注入—自动装配

本文详细介绍了Spring框架中IOC容器的自动装配特性,包括按名称(byName)和按类型(byType)装配两种方式,并探讨了它们的应用场景及限制条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NO.8 Spring IOC 依赖注入—自动装配

语法:<bean id="..." class="..." autowire="byType"/>
autowire:表示自动装配,会自动从IOC容器中寻找名称为属性名的bean ID 。

<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context.xsd ">

    <bean id="stuService" class="com.xt.spring.ioc.auto.StudentServiceImpl" autowire="byName"</bean>

    <bean id="stuDao" class="com.xt.spring.ioc.auto.StudentDaoJdbcImpl"></bean>
</beans>

以上是按名称装配,倘若将id改为stuDao0,则在容器中找跟不到与该属性名相同的bean,即属性值为null。若改为按类型装配,则可实现。
倘若出现如下情况:

<bean id="stuService" class="com.xt.spring.ioc.auto.StudentServiceImpl" autowire="byType"></bean>

<bean id="stuDao0" class="com.xt.spring.ioc.auto.StudentDaoJdbcImpl"></bean>
<bean id="stuDao1" class="com.xt.spring.ioc.auto.StudentDaoMybatisImpl"></bean>

则容器中有多个与该类型匹配的bean,那么将会抛出异常。

综上可知:autowire属性取值如下:
byType:按类型装配,可以根据属性的类型,在容器中寻找跟该类型匹配的bean。如果发现多个,那么将会抛出异常。如果没有找到,即属性值为null。
byName:按名称装配,可以根据属性的名称,在容器中寻找跟该属性名相同的bean,如果没有找到,即属性值为null。
constructor与byType的方式类似,不同之处在于它应用于构造器参数。如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常。

自动装配缺点:
在 Bean 配置文件里设置 autowire 属性进行自动装配将会装配 Bean 的所有属性. 然而, 若只希望装配个别属性时, autowire 属性就不够灵活了.
autowire 属性要么根据类型自动装配, 要么根据名称自动装配, 不能两者兼而有之.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值