ref:https://www.tutorialspoint.com/spring/spring_autowiring_byname.htm

project:Working Set: Spring>Project:Spring02>的

  entity>Person/User 和ApplicationContext2.xml以及test>Test2

没有使用注释的时候,需要在spring的xml配置文件中手动配置并关联bean.

获取bean需要使用ClassPathXmlApplicationContext类继承自AbstractApplicationContext类中的getBean("bean name")方法.

有时候,为了避免歧义,还要写带有classpath:的完整路径.

bean对应的类中,只需要设置和<bean><property name="propertiesName">中对应的set方法,格式如下:

setPropertiesName(...)

不需要无参和全参构造函数和get方法.

,需要在property中添加对应的属性.

其中如果没有使用别名,需要property中的name attribute和类中的属性名保持一致.

  *还可以通过bean中的autowire attribute来和属性 建立关系.

byName是通过参数名来在配置文件中寻找 和 "所需要的参数" 对应名称的bean,也就是和setPropertiesName()中的PropertiesName同名的bean.

比如:

PC有个CPU cpu属性,以及其他如String videoCard, Integer price;

那么<bean name="PC"如果设置 autowire="byType">

<property name="videoCard" value="GTX 1080">

<property name="price" value="20000">

</bean>

虽然没有配置Cpu类型的cpu属性.

但是如果配置文件中有个

<bean id="cpu" class=".....CPU"

就会寻找配置文件中的该bean.

因为类型是CPU.

*如果autowire是"byName"

就会寻找到和PC中的属性[CPU cpu]中的set方法的名称

因为setCpu和cpu对应.

  为了不混淆.

将PC中的CPU属性名设置成 cpu_ClassProp

将其set方法设置成setCpu_Set()

set方法的形参是cpu_Param

将bean的id设置成cpu_Bean

然后,byName对比的是

cpu_Bean和cpu_Set()是否相等.

如果找到setXYZ()和id为xYZ的bean,则会匹配.

将其作为属性注入到PC中,

等效于

<property name="cpu_Set" ref="cpu_Bean >

[Spring] 关联类和bean | autowire=byName|byType的更多相关文章

  1. spring 自动装配 default-autowire=&quot;byName/byType&quot;

    <PRE class=html name="code">spring 自动装配 default-autowire="byName/byType"   ...

  2. Spring之设置Bean值

    Java实例的属性值可以有很多种数据类型.基本类型值.字符串类型.java实例甚至其他的Bean实例.java集合.数组等.所以Spring允许通过如下几个元素为Bean实例的属性指定值: value ...

  3. SSM-Spring-06:Spring的自动注入autowire的byName和byType

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- di的注入上次讲了一些,这次主要阐述域属性的自动注入 先讲byType方式 看名字就知道是根据类型进行自动注入 ...

  4. spring bean autowire自动装配

    转自:http://blog.csdn.net/xiao_jun_0820/article/details/7233139 autowire="byName"会自动装配属性与Bea ...

  5. Spring -08 -自动注入 -byName/byType/constructor -全局使用default-autowire=” byName"

    1.在Spring 配置文件中对象名和ref=”id”id 名相同使用自动注入,可以不配置<property/>2.两种配置办法 2.1在<bean>中通过 autowire= ...

  6. Spring域属性自动注入byName和byType

    byName 方式 <!--byName约束:bean当中的域属性名必须跟所注入bean的id相同--> <bean id="student" class=&qu ...

  7. Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire

    创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质. Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些 ...

  8. Spring系列之bean的使用

    一.Bean的定义 <bean id="userDao" class="com.dev.spring.simple.MemoryUserDao"/> ...

  9. spring的自动装配(default-autowire="byName")

    自动装配,官方给出的定义是这样:Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系.因此,如果可能的话,可以自 动让Spring通过检查BeanFactory中的内 ...

随机推荐

  1. linux检查系统CPU,内存,磁盘使用率

    #!/bin/bash CPU=`top -bn 1 -i -c | sed -n '3p' | awk -F ':' '{print$2}' | awk '{print$1}'` MEM=`free ...

  2. 【python003-变量】

    变量 一.在使用变量之前,需要先对其进行赋值 二.变量命名的规则:可以包含字母,数字,下划线,但是不能以数字开头 三.字符串: 1.引号内的一切东西 2.python的字符串是要在两边加上引号,对于单 ...

  3. Received empty response from Zabbix Agent at [172.16.1.7]...

    Centos7.5  zabbix添加主机发现ZBX爆红报错 原因:在配置/etc/zabbix/zabbix_agentd.conf中172.16.1.71写成了127.16.1.71 解决方法:重 ...

  4. linux下安装tomcat和jdk

    1.现在的linux服务器一般自带jdk,先查询是否已经安装jdk rpm -qa | grep java rpm -qa | grep jdk 如上则是没有安装,可以直接跳到步骤X,安装jdk.否则 ...

  5. Bootstrap3基础 input-group-btn 按钮与输入框 横向组合

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...

  6. java 动态代理总结

    首先:定义一个接口// 只能是一个接口 例: package DongTai; public interface dongtai { public void show(); } 接着:定义一个被代理类 ...

  7. POJ 2387 Til the Cows Come Home 【最短路SPFA】

    Til the Cows Come Home Description Bessie is out in the field and wants to get back to the barn to g ...

  8. 简单明了的掌握diff命令? 参考: http://www.ruanyifeng.com/blog/2012/08/how_to_read_diff.html

    diff是比较两个 文本文件, 或目录,(中名字相同的文件) diff 是按行来比较的, 只要两个对应的行, 不完全一致, 就报告为不同, 否则就视为相同. (一行中任意一点的不同...) 检查时, ...

  9. 如何查看sonarqube的版本

    Server Logs & System Info The System Info page is found at Administration > System. It gives ...

  10. UML类图中箭头的含义

    Explanation of the UML arrows Here's some explanations from the Visual Studio 2015 docs: UML Class D ...