依赖注入...基本基本(新实例时不注入)

时间:2015-02-06 13:54:36

标签: java dependency-injection code-injection

当我按

创建新实例时
MyObject obj = new MyObject();

注射永远不会发生。

MyObject的示例源可能是......

@Stateless
public class MyObject{

    @Inject
    Injection inj;

    public MyObject() {
    }
    ...
}

注射只适用于注射物体吗?当我明确创建一个新实例时,没有办法使用注入吗?

我想创建一个动态创建实例的类菜单(使用反射......反射不是问题......我尝试使用new语法)。

我不想在菜单或主类中注入每个View类。

2 个答案:

答案 0 :(得分:2)

注射仅适用于容器控制其使用寿命的物体。如果您只是创建新对象,容器将如何知道该对象已创建。

通常,您的问题的解决方案之一是:

  • 不要自己创建对象,而是要求容器创建对象。虽然在组合物根部外使用容器是一种你应该避免的气味。
  • 自己创建对象并手动注入依赖项。这要求创建新对象的对象可以访问它将在创建时创建的对象的所有依赖项。这可能是不可取的,所以你可以改为
  • 将创建委托给工厂类。该类获取创建对象所需的所有依赖项,以及您当前正在创建的类#39;该对象只对工厂有一个依赖。

答案 1 :(得分:0)

您需要使用@Named对类进行注释,以便它由IoC实例化,否则它将永远不会看到@Inject。