@Resource位于java.annotation包下,是来自JavaEE规范的一个Annotation,Spring直接借鉴了该Annotation,通过使用该Annotation为目标Bean指定协作者Bean。
@Resource有一个name属性,默认情况下,Spring将这个值解释为需要被注入的Bean实例的名字。换句话说,使用@Resource与<property.../>元素的ref属性有相同的效果。
@Component public class Chinese implements Person { private Axe axe; @Resource(name="stoneAxe") public void setAxe(Axe axe) { this.axe = axe; } @Override public void useAxe() { System.out.println(axe.chop()); } }上面的@Resource Annotation指定将stoneAxe注入该setAxe( )方法,也就是将容器中的stoneAxe Bean作为setAxe方法的参数传入。
@Resource不仅可以修饰setter方法,也可以直接修饰Field,使用@Resouce时还可以省略name属性。使用@Resource修饰Field时连setter方法都可以不要:
@Component public class Chinese implements Person { @Resource(name="stoneAxe") private Axe axe; @Override public void useAxe() { System.out.println(axe.chop()); } }① 当使用 @Resource修饰setter方法时,如果省略name属性,例如@Resource标注 setName( )方法,则Spring默认注入容器中名为name的组件。
② 当使用@Resource修饰Field时,如果省略name属性,例如@Resource标注name Field,则Spring默认会注入容器中名为name的组件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。