解决方案 »
- html跳转到servlet时如何带参数传递!!(没有表单)
- hamcrest最简单的问题。。
- https://127.0.0.1:8080/login.do 移植后无法运行
- 我是JAVA菜鸟,请问我应该最先学哪些书啊
- SSH搭建环境时,proxool配置连接池总是报没有设置用户名和密码
- ******JB9工程在JBX编译出现 java.lang.NullPointerException ****有什么解决方法
- 谁有j2ee入门的项目或者例子?
- 目前功能最强,最流行的Java XML解析器是什么,列出前三。
- 关于电信!!为啥这么卡??
- 写好了一个实体BEAN,已经发布成功,如何在JSP中调用?
- Hibernate一级缓存session的原理和内部结构
- BVT 用什么工具?
@Resource 默认按 byName 自动注入,只是它是由 JSR-250 规范定义的注释@Autowired
@Qualifier("beanName")使用注入后,就不用再 setter/getter 了至于 LZ 说的那个问题,你真的了解了 什么是 byType , 什么是 byName 了吗 ?
这个可以小试一下 就几句代码..
按照我的代码应该是会报错,因为有2个相同的类型,结果去输出了结果。。
不解..
呵呵!
@Autowired(默认按类型查找,若没有查到 不会再去用名称查找)byType 按照类型装配 可以根据属性类型 在容器中寻找跟该类型匹配的bean如果发现多个会抛出异常 如果没有找到属性值设置为nullbyName 按照名称装配 根据属性名称 在容器中寻找该属性名称相同的bean 如果找不到 属性值为null 既然是注解 set get 应去掉
< 按照我的代码应该是会报错,因为有2个相同的类型,结果去输出了结果。。 >
只要bean id 不相等 一个实现类 可以写多个
你说错了吧。你跑了楼主的程序没? 我刚刚跑了下,按楼主的程序我的确实异常了:
Could not autowire field: private fiona.apple.Office fiona.apple.Boss.office; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [fiona.apple.Office] is defined: expected single matching bean but found 2: [office, office2]但如果我把xml文件中的任意一个office的定义注释掉,就不会有问题了。所以楼主的理解还是正确的,@Autowired是按类型装配的,如果xml文件中有多个相同类型的定义,会出异常。
如果 Spring 容器中拥有多个候选 Bean,Spring 容器在启动时也会抛出 BeanCreationException 异常。
但请记住,此时仍然是byType!如楼上所说的那样。这时候如果结合使用@Qualifier,就会消除这种歧义,且自动注入的策略就从 byType 转变成 byName 了。如: @Autowired
public void setOffice(@Qualifier("office")Office office) {
this.office = office;
}
注:@Autowired 可以对成员变量、方法以及构造函数进行注释,而 @Qualifier 的标注对象是成员变量、方法入参、构造函数入参。