企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] # xml配置Bean自动装配 spring IOC容器可以自动装配Bean.需要做的仅仅是在`<bean>`的autowire属性里指定自动装配的模式 * byType(根据类型自动装配):若IOC容器中有多个与目标Bean类型一致的Bean.在这种情况下,spring将无法判定那个Bean最合适该属性,所以不能执行自动装配 * byName(根据名称自动装配):必须将目标Bean的名称和属性名设置的完全相同 * constructor(通过构造器自动装配):当Bean中存在多个构造器时,这种自动装配方式将会很复杂,不推荐使用 * autodetect:通过bean类的自省机制(introspection)来决定是使用constructor还是byType方式进行自动装配。如果发现默认的构造器,那么将使用byType方式 # byName和byType ~~~ <bean name="car" class="com.spring.Car"> <property name="name"> <value><![CDATA[<奔驰>]]></value> </property> <property name="color" value="黄色"/> </bean> <!-- 我们可以通过autowire属性设置自动装配 default:默认值不装配 byName:根据当前bean的属性的属性名及IOC容器中bean的id属性值实现自动装配, 如果找到了相同的则装配成功,如果找不到则不装配 byType:根据当前bean的属性的属性类型及IOC容器中的bean的类型实现自动装配 --> <bean name="user" class="com.spring.User" autowire="byType"> <property name="name" value="jake" /> </bean> ~~~ 如果没有找到该类型的bean则不装配. 如果找到一个该类型的bean则装配成功. **如果找到多个该类型的bean则会抛出异常** # 缺点 * 在Bean配置文件里设置autowire属性进行自动装配将会装配Bean的所有属性. 然而,若只希望装配个别属性时,autowire属性就不够灵活了. * autowire属性要么根据类型自动装配,要么根据名称自动装配,不能两者兼而有之