Bean的自动装配
首先要清楚装配的概念,不要和注册混在一起,注册是注册,装配是装配,注册即是在xml文件中进行注册,按照正常程序来说,如果注册的bean中含有别的类的对象,需要进行手动的装配,这里的自动装配省略的是这一步,而不是不用进行注册
- 自动装配是Spring满足bean以来的一种方式
- Spring会在上下文中自动寻找 并且自动装配属性
Spring有三种装配方式
- xml显示配置
- java显示配置
- 隐式的自动装配
自动装配 @Autowired
- byName
byName会自动在容器上下文中进行查找,与自己对象set方法后面的值对应的beanid
-
在上图中为people对象,而people实例中又包含着dog和cat两种对象,所以在上图这个例子中people中含有cat和dog两种对象,同时也会有两种对象的set方法,因此在xml配置文件中锁注册的beanid如果有与people对象中所包含的set方法中一样的名字时就会进行自动装配
-
在people类中的set方法后面cat和dog的首字母都是大写,在xml文件中首字母确是小写,这样仍能自动装配上,不区分大小写这个说法是不对的,set/get方法生成会自动将属性首字母大写,所以Spring也只是会自动把set和get后面的首字母变为小写
-
byType
byType会自动在容器上下文中进行查找,与自己对象属性类型相同的bean
- 必须要保证类型全局唯一,不然会出现报错
使用注解实现自动装配
扩展:jdk从1.5开始支持注解;Spring从就开始支持注解开发了
要使用注解须知
-
导入约束(context约束)
-
配置注解的支持
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <!--开启注解的支持--> <context:annotation-config/> </beans>
@Autowired
在people类中引用的对象上面加上@Autowired之后就可以直接进行装配了,前提是名字要一致
- 除了在属性上注解还可以在set方法上进行注解
- Autowired有限按照类型进行中查找,找不到的话就会报错,如果找到多个则按照名字,如果还是找不到的话,就会报错
@Qualifier
@Qualifier
当xml中注册了多个同样类型的bean时可以通过@Qualifier来使用id进行装配