Spring学习-----bean的装配(6)
来源:互联网 发布:linux zip 打包文件夹 编辑:程序博客网 时间:2024/06/16 17:10
上一节中,我们学了继承配置和通过构造函数来装配bean,通过继承配置的方式来装配bean,可以实现子类和父类的功能。通过构造函数来装配bean,要注意的就是相应的有参构造函数要存在,当然无参的构造函数也应该存在。这一节中,我们来学习自动装配。
本文中涉及到的bean有两个,一个是Dog.java,另一个是Master.java,其中Master.java中有一个Dog属性。
有四种自动装配的类型:
1、byName 寻找和属性名相同的bean。若找不到,则装不上
2、byType 寻找和属性类型相同的bean。若找不到,则装不上,若找到多个,抛异常
3、constructor 查找和bean的构造参数一致的一个或多个bean。若找不到或者找到多个,抛异常。按照参数的类型装配
4、autodetect (3)和(2)之间选一个方式,不确定到底选择哪个
5、no:不自动装配,这是autowire的默认值。
6、default :这个需要在<beans default-autowire="指定" />
PS:不推荐使用自动装配,因为自动装配往往不能直观的看出哪些属性被配置了。
PS:如果<beans>指定了default-autowire属性,那么所有bean的default属性值就是这个。如果没有指定default-autowire属性,则default-autowire的默认值是no。
PS:如果使用自动装配同时使用手动装配,那么自动装配的属性,将被手动装配的属性覆盖。
(1)ByName
当程序执行到标注红字的时候,就会调用配置文件中的代码,实例化其中的bean对象。首先在内存中创建一个dog对象,然后创建一个master对象。master对象中有一个dog属性,此时,就会根据autowire的方式来配置这个属性,此时是“ByName”,那么程序就会根据id来查找,看是否有一个“dog”的对象,发现有,ok成功装配。这就是“ByName”的自动装配方式。当然,如果dog对象的id不是“dog”而是“cat”或是其他的名称,再次运行的话会发现程序报错。这就从侧面说明了,我们的dog对象的id不是随便取的,而是和master属性中的Dog类型的引用名称一致的。
(2)ByType
如果选择了ByType类型,那么就会根据dog所属的类来寻找对象,如果找到的不唯一,那么还是会报错的。
可以看到,此时的id是不是dog都已经无所谓了。
(3)constructor
当你选择了这种方式的时候,在master.java中必须要有一个这样的构造函数
当然,如果master中还有别的构造函数,比如说什么Master(Dog dog,String name)之类的,那就GG了。
(4)autodetect
(5)default
在beans中,我们可以用default-autowire="指定类型"的方式来设定默认的装配类型,如果没有指定的话那么就是“no”
在对象的配置中,我们也可以设置“autowire”,默认的情况下是“default”,也就是你在beans中设置的匹配类型。如果自己设置的话,那就以自己设置的为准。
-----------------------------------------------------------------------------------------------------
引入特殊的bean
有时候我们需要对数据库进行设置,大家都知道,数据库的配置信息我们一般是放在properties配置文件中的,在Spring中,有一个特殊的bean来帮助我们实现对配置文件的读取。
如果我们想引入两个配置文件的话,我们只需要在location中加入另一个配置文件的路径,用","隔开。
- Spring学习-----bean的装配(6)
- Spring学习----Bean的装配(4)
- Spring学习-----bean的装配(5)
- Spring学习(2)------bean的装配
- Spring框架学习第二讲(Spring的bean装配)
- Spring学习-装配Bean
- Spring学习-装配Bean
- Spring学习之Bean的自动装配(非注解)
- Spring学习:bean的自动装配(注解)
- Spring 4.0 学习日记(5) ---bean的自动装配
- Spring学习(四)-Bean的三种装配方式
- Spring学习笔记之Bean的装配
- spring学习-2 Bean的装配
- Spring学习之Bean的装配
- Spring-Bean的装配
- Spring-bean的装配
- Spring的Bean装配
- spring bean的装配
- android是mvc还是mvvm架构?
- Apache模块
- 默认的等号操作也是浅拷贝
- Linux 重定向
- 监控Apache
- Spring学习-----bean的装配(6)
- HDU 2191 二进制优化 和 单调队列优化
- luogu2055 [ZJOI2009]假期的宿舍
- aliyun 阿里云Maven仓库地址 不管是自建私服还是maven构建 必备 结束了几kb的历史
- Java中的设计模式与7大原则
- 堆排序解决 top k 问题
- /proc/stat
- Airkiss智能配置上网
- MATLAB reshape,repmat简单示例