Как научить findbugs правильно понимать поля IoC? - PullRequest
6 голосов
/ 18 ноября 2010

Это мой класс (JAX-RS с комментариями):

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

Вот что findbugs говорит:

Unwritten field: com.XXX.Foo.uriInfo

Это правда, поле неписано, но оно вводится сервлетом JAX-RS. Я думаю, что я делаю что-то здесь не так, но как решить проблему?

1 Ответ

3 голосов
/ 18 ноября 2010

Что я понимаю, так это то, что findbugs прав.Он говорит мне, что эта переменная недоступна извне класса, и моя аннотация недопустима с точки зрения ООП.Сервлет JAX-RS должен будет нарушить ограничения доступа к полю, чтобы ввести UriInfo.Я должен дать ему законный путь к этому полю:

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

Теперь это правильно для findbugs и для парадигмы разработки ООП:)

...