我可以在@resouce中使用其他变量名称吗

时间:2019-01-15 23:44:09

标签: java spring annotations

这可能是一个非常基本的问题,但是拥有NPE,因此要确保

变量是否必须使用相同的资源名称,或者注入时可以不同?

@Resource(name='foo')
private X foo;

或者可以是

@Resource(name='foo')

private X fooxx;

我正在使用第二种情况,实例名称与资源名称不同,但获得了NPE

1 个答案:

答案 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方法中: