这是我的类(class)(带注释的JAX-RS):

@Path("/")
public class Foo {
  @Context
  private UriInfo uriInfo;
  // ...
}

这是findbugs所说的:
Unwritten field: com.XXX.Foo.uriInfo

的确,该字段是未写入的,但是它是由JAX-RS servlet注入(inject)的。我认为我在这里做错了什么,但是如何解决问题呢?

最佳答案

到目前为止,我所了解的是findbugs是正确的。它告诉我,该变量不能从类外部访问,并且我的注释在OOP方面无效。为了注入(inject)UriInfo,JAX-RS servlet必须打破字段访问限制。我必须给他一个合法的途径去这个领域:

@Path("/")
public class Foo {
  private UriInfo uriInfo;
  @Context
  public void setUriInfo(UriInfo info) {
    this.uriInfo = info;
  }
  // ...
}

现在,它对于findbug和OOP设计范例是正确的:)

关于java - 如何教findbug正确理解IoC字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4213556/

10-08 23:17