6

これは私のクラスです(JAX-RS注釈付き):

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

これはfindbugsが言うことです:

Unwritten field: com.XXX.Foo.uriInfo

確かに、フィールドは書き込まれていませんが、JAX-RS サーブレットによって注入されます。ここで何か間違ったことをしていると思いますが、問題を解決するにはどうすればよいですか?

4

1 に答える 1

3

私がこれまでに理解したことは、findbugs が正しいということです。この変数はクラスの外部からアクセスできず、私の注釈は OOP に関して有効ではないことがわかります。JAX-RS サーブレットは、注入するためにフィールド アクセス制限を破る必要がありますUriInfo。私は彼にこの分野への合法的な道を与えなければなりません:

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

これで、findbugs と OOP 設計パラダイムが正しくなりました:)

于 2010-11-18T10:30:00.187 に答える