挂毯IoC的构造和注射(Tapestry IoC constructor and injection

2019-10-29 11:23发布

我有以下类:

public class MyClass {
    @Inject
    private MyAnotherClass myAnotherClass;

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

我需要做在构造函数中有些东西需要的实例myAnotherClass 。 不幸的是myAnotherClass在构造函数代码跑后注入,这意味着我在执行操作null ...

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

您有什么建议解决方案来解决这个问题呢?

Answer 1:

最佳选择:

public class MyClass {
  private final MyAnotherClass myAnotherClass;

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

然后T5-IOC将使用构造函数注入,所以没有必要“新”了MyClass自己。 见定义挂毯国际奥委会服务的更多信息。

或者:

public class MyClass {
  @Inject
  private MyAnotherClass myAnotherClass;

  @PostInjection
  public void setupUsingOther() {
    // Called last, after fields are injected
  }
}


文章来源: Tapestry IoC constructor and injection