XML 配置里的 Bean 自动装配

在XML文件中,
先看一下下面的代码:

<bean id="student" class="com.jeremy.spring.beans.student">
    <property name="s_name" value="jeremy"></property>
    <property name="age" value="20"></property>
    </bean>

    <bean id="teacher" class="com.jeremy.spring.beans.teacher">
    <property name="tch_name" value="java"></property>
    <property name="tch_age" value="20"></property>
    <property name="student">
            <ref bean="student"/>
    </property>

    </bean> 

颜色加深部分,以前我们对Bean依赖其他的Bean时,需要具体的指定是那个Bean,以供容器初始化时装载,但是有没有一种方法能让Bean依赖的Bean自动被装载呢??不需要具体的指定是哪一个Bean

答案是有的:

Spring IOC 容器可以自动装配 Bean.
需要做的仅仅是在 <bean> 的 autowire 属性里指定自动装配的模式
byType(根据类型自动装配): 若 IOC 容器中有多个与目标 Bean 类型一致的 Bean. 在这种情况下, Spring 将无法判定哪个 Bean 最合适该属性, 所以不能执行自动装配. (比如Bean1中有一个属性的类型是对象Student类型,那指定这个类型后Spring会自动XML文件是否配置对象Student类型的Bean,如果有就装配,没有就不能执行自动装配,而且如果有多个类型相同的Bean也不行,)
byName(根据名称自动装配): 必须将目标 Bean 的名称和属性名设置的完全相同.(大小写也要注意)
constructor(通过构造器自动装配): 当 Bean 中存在多个构造器时, 此种自动装配方式将会很复杂. 不推荐使用

代码:

<bean id="student" class="com.jeremy.spring.beans.student">
    <property name="s_name" value="tom"></property>
    <property name="age" value="20"></property>
    </bean>

    <bean id="teacher2" class="com.jeremy.spring.beans.teacher" autowire="byName" >
    <property name="tch_name" value="java"></property>
    <property name="tch_age" value="20"></property>
    </bean> 
时间: 2024-10-27 01:37:15

XML 配置里的 Bean 自动装配的相关文章

XML配置里的Bean自动装配与Bean之间的关系

需要在<bean>的autowire属性里指定自动装配的模式 byType(根据类型自动装配) byName(根据名称自动装配) constructor(通过构造器自动装配) 名字须与属性名一致 byName根据Bean的名字和当前bean的setter风格的属性名进行自动装配,若有匹配的,则进行自动装配,没有则不装配 byType  根据bean的类型和当前bean的属性的类型进行自动装配 缺点:有一个以上的类型匹配的bean则抛异常 自动装配的缺点 不够灵活,不能两者兼而言之 Bean之间

【小家Spring】老项目迁移问题:@ImportResource导入的xml配置里的Bean能够使用@PropertySource导入的属性值吗?

#### 每篇一句 > 大师都是偏执的,偏执才能产生力量,妥协是没有力量的.你对全世界妥协了你就是空气.所以若没有偏见,哪来的大师呢 #### 相关阅读 [[小家Spring]详解PropertyPlaceholderConfigurer.PropertyOverrideConfigurer等对属性配置文件Properties的加载和使用](https://blog.csdn.net/f641385712/article/details/91444601) [[小家Spring]Spring中@

Spring -- Bean自动装配&amp;Bean之间关系&amp;Bean的作用域

Bean的自动装配 Spring IOC 容器可以自动装配 Bean. 需要做的仅仅是在 的 autowire 属性里指定自动装配的模式 有以下几种自动装配的类型: byType(根据类型自动装配): 若 IOC 容器中有多个与目标 Bean 类型一致的 Bean. 在这种情况下, Spring 将无法判定哪个 Bean 最合适该属性, 所以不能执行自动装配. byName(根据名称自动装配): 必须将目标 Bean 的名称和属性名设置的完全相同. constructor(通过构造器自动装配):

Bean自动装配-XML最小化配置

上一个讲了怎样用xml配置所有的Bean以及进行依赖注入,但是这样太麻烦了,对于每一个bean都要写一个xml,可以有几种方式进行自动装配. 四种装配方式 byName(通过名字装配,这时属性的名字必须与bean名字一致) byType(通过类型,匹配与interface或class相同的类型),这种是找到对应的方法,然后进行setter方法进行注入的 constructor(也是通过类型匹配,但是是通过new的进行装配的) 最佳自动装配(先用constructor装配,然后再用byType)

spring第一课,beans配置(中)——自动装配

bean的配置除了有手动配置,还有自动装配这一说法,具体怎么操作,如下代码事例. 自动装配可根据bean的名称与配置bean属性名称的对应进行配置,也可根据bean的类型与配置bean属性的类型进行配置. 1.自动配置 byName person类 1 package com.org.spring.beans; 2 3 public class Person { 4 private String name; 5 private int age; 6 private Car car; 7 8 @O

Spring学习四、Bean自动装配与注解开发

七.Bean的自动装配 自动装配是Spring满足bean依赖的一种方式! Spring会在上下文中自动寻找bean,自动装备属性 在Spring中有三种自动装配方式 在xml中显示配置 在Java中显示配置 隐式的自动装配[重要] 7.1 测试 环境搭建:一个人两个宠物 7.2 ByName自动装配 <!-- ByName:会自动在容器上下文中查找,和自己对象set方法后面的值对应的beanid --> <bean id="people" class="c

Spring4学习笔记 - 配置Bean - 自动装配 关系 作用域 引用外部属性文件

1 Autowire自动装配 1.1 使用:只需在<bean>中使用autowire元素 <bean id="student" class="com.kejian.spring.bean.autowire.Student" p:name="Tony" autowire="byName"></bean> 1.2 类型 byName 目标bean的id与属性名一置,若不匹配置为null byTy

XML配置下Spring Bean的注入

主题 之前学习了@Autowired下SpringBean是怎么注入到属性中的. https://www.cnblogs.com/abcwt112/p/12541783.html 现在学习下远古时代的XML是怎么注入的. Ac初始化 入口是XML的AC. new的时候回做refresh方法 refresh之前的文章分享过大致做了什么 https://www.cnblogs.com/abcwt112/p/12388982.html 其中这一步会去掉BeanFactory的getBean方法去初始化

spring-使用注解实现Bean自动装配1

一.创建项目    项目名称:spring100802二.在项目中添加spring 支持    1.在项目中创建lib目录        /lib    2.在lib目录下添加jar包        commons-logging.jar        junit-4.10.jar        log4j.jar        spring-beans-3.2.0.RELEASE.jar        spring-context-3.2.0.RELEASE.jar        spring