在bean标签中添加属性:Autowire即可
byName:对象中属性名称与容器中的beanId进行匹配,如果属性名与beanId数值一致,则自动装配成功
byType:对象中属性类型与容器中class进行匹配,如果唯一匹配则自动装配成功
匹配0个:未装配
匹配多个,会报错
expected single matching bean but found 2: deptDao,deptDao2
注意:基于XML方式的自动装配,只能装配非字面量数值
约定:约束>配置【注解>XML】>代码
位置:在类上面标识
注意:
- Spring本身不区分四个注解【四个注解本质是一样的@Component】,提供四个注解的目的只有一个:提高代码的可读性
- 只用注解装配对象,默认将类名首字母小写作为beanId
- 可以使用value属性,设置beanId;当注解中只使用一个value属性时,value关键字可省略
装配对象四个注解
使用注解步骤
导入相关jar包【已导入】
开启组件扫描
<!-- 开启组件扫描
base-package:设置扫描注解包名【当前包及其子包】
-->
<context:component-scan base-package="com.atguigu"></context:component-scan>
使用注解标识组件
@Autowired注解
作用:自动装配对象中属性
装配原理:反射机制
装配方式
先按照byType进行匹配
匹配1个:匹配成功,正常使用
匹配0个:
默认【@Autowired(required=true)】报错
/*expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
*/
@Autowired(required=false),不会报错
匹配多个
再按照byName进行唯一筛选
筛选成功【对象中属性名称==beanId】,正常使用
筛选失败【对象中属性名称!=beanId】,报如下错误:
//expected single matching bean but found 2: deptDao,deptDao2
@Autowired中required属性
@Qualifier注解
@Value注解