我知道了 list 和 map 没有使用qualifier
sorry 没看清
qualifier的作用不是缩小范围么,value属性就是通过这个值来找到这个bean,id这里就没有什么意义了,不是说没有id了,而是这里没用到,可以不用写了。(ˇˍˇ)
getClass() 是通过实例对象取得在内存中该实际类型class对象的引用。
参见Java类名.class和getClass()区别
学习什么东西都会有收获的
意思就是bytype可能有多个?
反 射
Shift+alt+z
我觉得注解是spring的jar包里有说明。框架的好处是直接拿来用就可以,而不需要知道是怎么定义即怎么来的。如有错误欢迎各位指出。
JSR是Java Specification Requests——java 规范要求,正如java的版本、spring的版本、其他框架的版本一样,jsr的版本也有很多,这个标准主要是由java业内的权威的组织、公司或个人提交给JCP(Java Community Process),
是对使用javaAPI和服务的人的一个约束的标准。
假设有这样一种情况,当你创建多个具有相同类型的 bean 时,并且只为它们其中的一个进行装配,在这种情况下,你可以使用 @Qualifier 注释和 @Autowired 注释通过指定哪一个真正的 bean 将会被装配来消除混乱
例如:一个StudentDao接口有两个实现类,分别为StudentDaoImpOne和StudentDaoImpTwo。在StudentService类中有一个属性为private StudentDao sd,用此属性为StudentDao中的一个实现类装配(假设装配StudentDaoImpOne这个实现类),则在private StudentDao sd上标注@Autowire @Qualifier("studentDaoImpOne")。因为@Autowire时,默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualifier一起使用。
在使用Spring框架中@Autowired标签时默认情况下使用 @Autowired 注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个。当找不到一个匹配的 Bean 时,Spring 容器将抛出BeanCreationException 异常,并指出必须至少拥有一个匹配的 Bean。Spring 允许我们通过 @Qualifier 注释指定注入 Bean 的名称,这样歧义就消除了,可以通过下面的方法解决异常。@Qualifier("XXX") 中的 XX是 Bean 的名称,所以 @Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。@Autowired 可以对成员变量、方法以及构造函数进行注释,而 @Qualifier 的标注对象是成员变量、方法入参、构造函数入参。
都能输出的,下面是输出内容
JsrServie init.
list...
com.imooc.beanannotation.multibean.BeanImplTwo
com.imooc.beanannotation.multibean.BeanImplOne
map...
beanImplOne com.imooc.beanannotation.multibean.BeanImplOne
beanImplTwo com.imooc.beanannotation.multibean.BeanImplTwo
com.imooc.beanannotation.multibean.BeanImplTwo