这可能是一个非常基本的问题,但是拥有NPE,因此要确保
变量是否必须使用相同的资源名称,或者注入时可以不同?
@Resource(name='foo')
private X foo;
或者可以是
@Resource(name='foo')
private X fooxx;
我正在使用第二种情况,实例名称与资源名称不同,但获得了NPE
答案 0 :(得分:1)
注释是正确的,这应该起作用..确保类型正确,但是问题可能是其他原因。 根据{{3}} ...
3.9.5 @Resource Spring还支持在字段或bean属性设置器方法上使用JSR-250 @Resource批注进行注入。这是Java EE 5和6中的常见模式,例如在JSF 1.2托管Bean或JAX-WS 2.0端点中。 Spring也为Spring管理的对象支持此模式。
@Resource具有名称属性,默认情况下,Spring将该值解释为要注入的Bean名称。换句话说,它遵循命名语义,如本示例所示:
public class SimpleMovieLister {
private MovieFinder movieFinder;
@Resource(name="myMovieFinder")
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
}
如果未明确指定名称,则默认名称是从字段名称或setter方法派生的。如果是字段,则以字段名称为准;在使用setter方法的情况下,它采用bean属性名称。因此,以下示例将名称为“ movieFinder”的bean插入其setter方法中: