0

我有以下课程:

public class MyClass {
    @Inject
    private MyAnotherClass myAnotherClass;

    public MyClass() {
        //Perform operations on myAnotherClass.
    }
}

我需要在构造函数中做一些需要myAnotherClass. 不幸myAnotherClass的是,在构造函数中的代码运行后注入,这意味着我正在对null...执行操作

我当然可以直接在构造函数中以经典方式 () 实例化它MyAnotherClass myAnotherClass = new MyAnotherClass(),但我认为在这种情况下这样做是不正确的。

你会建议什么解决方案来解决这个问题?

4

1 回答 1

7

最佳选择:

public class MyClass {
  private final MyAnotherClass myAnotherClass;

  public MyClass(MyAnotherClass other) {
    this.myAnotherClass = other;
    // And so forth
  }
}

然后 T5-IoC 将使用构造函数注入,因此无需自己“新建” MyClass。有关详细信息,请参阅定义 Tapestry IOC 服务

或者:

public class MyClass {
  @Inject
  private MyAnotherClass myAnotherClass;

  @PostInjection
  public void setupUsingOther() {
    // Called last, after fields are injected
  }
}
于 2013-02-27T22:38:10.863 回答