Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配

一、Spring IOC 容器支持自动装配 Bean,所谓自动装配是指,不需要通过 <property> 或 <constructor-arg> 为 Bean 的属性注入值的过程。二、配置:在 <bean> 的 autowire 属性里指定自动装配的模式。默认为 no 。可以通过 <beans> 根元素的 default-autowire 属性改变默认值。三、自动装配的三种模式:1.byType(根据类型自动装配):若 IOC 容器中出现多个与目标 Bean 类型一致的 Bean。Spring 无法识别使用哪个,有二义性。报异常。2.byName(根据名称的自动装配):必须将当前 Bean 的属性名和目标 Bean 的 id 值设置为相同。3.construtor(根据构造器自动装配):不推荐使用。四、例子e1:之前的方式,通过 <property> 来指定。<bean class="com.linuxidc.spring.Address" id="address"> <property name="addressName" value="beijing"/></bean><bean class="com.linuxidc.spring.Phone" id="phone" p:phoneNum="123456789"/><bean id="employee" class="com.linuxidc.spring.Employee"> <property name="empName" value="emp01"/> <property name="phone" ref="phone"/> <property name="address" ref="address"/></bean>输出:Employee{empName="emp01", address=Address{addressName="beijing"}, phone=Phone{phoneNum="123456789"}}e2:根据名称的自动装配<bean class="com.linuxidc.spring.Address" id="address"> <property name="addressName" value="beijing"/></bean><bean class="com.linuxidc.spring.Phone" id="phone" p:phoneNum="123456789"/><bean id="employee" class="com.linuxidc.spring.Employee" autowire="byName"> <property name="empName" value="emp01"/></bean>输出:Employee{empName="emp01", address=Address{addressName="beijing"}, phone=Phone{phoneNum="123456789"}}e3:根据类型的自动装配<bean class="com.linuxidc.spring.Address" id="address"> <property name="addressName" value="beijing"/></bean><bean class="com.linuxidc.spring.Phone" id="phone" p:phoneNum="123456789"/><bean id="employee" class="com.linuxidc.spring.Employee" autowire="byType"> <property name="empName" value="emp01"/></bean>输出:Employee{empName="emp01", address=Address{addressName="beijing"}, phone=Phone{phoneNum="123456789"}}如果定义多个的话,首先在 idea 中,spring config 文件会报错,给出提示。另外,如果运行的话,会报一个 org.springframework.beans.factory.NoUniqueBeanDefinitionException 这样的异常。五、细节问题1.对 <bean> 的属性设置 autowire 属性进行自动装配将会装配 Bean 的所有属性。若希望只装配某个属性时,autowire 属性就不够灵活了。2.虽然可以通过 autowire 属性能自动装配,但是优先级要低于通过 <property> 配置的属性。如:<bean class="com.linuxidc.spring.Phone" id="phone02" p:phoneNum="1234567890"/><bean class="com.linuxidc.spring.Address" id="address"> <property name="addressName" value="beijing"/></bean><bean class="com.linuxidc.spring.Phone" id="phone" p:phoneNum="123456789"/><bean id="employee" class="com.linuxidc.spring.Employee" autowire="byName"> <property name="empName" value="emp01"/> <property name="phone" ref="phone02"/></bean>3.对于 autowire 属性的两种类型:根据类型或根据名称的自动装配不能同时使用。4.在实际项目中很少使用基于 XML 的 Bean 的自动装配,因为明确清晰配置更易读。Spring中如何配置Hibernate事务 http://www.linuxidc.com/Linux/2013-12/93681.htmStruts2整合Spring方法及原理 http://www.linuxidc.com/Linux/2013-12/93692.htm基于 Spring 设计并实现 RESTful Web Services http://www.linuxidc.com/Linux/2013-10/91974.htmSpring-3.2.4 + Quartz-2.2.0集成实例 http://www.linuxidc.com/Linux/2013-10/91524.htm使用 Spring 进行单元测试 http://www.linuxidc.com/Linux/2013-09/89913.htm运用Spring注解实现Netty服务器端UDP应用程序 http://www.linuxidc.com/Linux/2013-09/89780.htmSpring 3.x 企业应用开发实战 PDF完整高清扫描版+源代码 http://www.linuxidc.com/Linux/2013-10/91357.htmSpring 的详细介绍:请点这里
Spring 的下载地址:请点这里本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/133314.htm