type
status
date
slug
summary
tags
category
icon
password
基于注解配置bean,使用的注解是@AutoWired或者@Resource
@AutoWaired的配置规则说明
- 先在ioc中查找待装配的组件类型,如果ioc容器中此类型只有一个,那么就使用该bean装配。
- 如果查找到该类型有多个,那么以配置的属性名作为id进行查找,如果找到就装配,找不到就抛异常。
演示
使用autoWired装配的类型只有一个
那么就不会按照id去搜索,而是按照类型直接搜索
测试
结果

image-20230212153608013
当使用autoWaired装配的类型只有一个的时候,属性无论使用什么名称都可以装配成功,因为此时是按照类型装配的。
当待装配的类型有多个时
上面的代码依然可以执行成功,是因为有多个类型时,会按照id进行装配,扫描包装配类型时是按照类名的首字母小写进行装配,而代码中属性名也是首字母小写,所以可以执行成功。
证明
打印代码中装配的service和容器中获取类名小写的service是否一样。
结果
打印的hash值一样,说明属性中装配的对象是一样的。

image-20230212155046747
由此可以得到,如果更换装配的属性名时,而且这个属性名在容器中存在的话,那么装配的对象将不一样。

image-20230212155613026