春季注入内心阶层

Ser*_*gey 3 java spring inversion-of-control

是否可以将bean注入内部类?

例如:

@Named
public class outer {

   @Inject
   private SomeClass inst; // Injected correctly

   private static class inner {
        @Inject
        private AnotherClass instance;  // Not being injected
...
Run Code Online (Sandbox Code Playgroud)

编辑:"AnotherClass"仅由内部类使用,所以我不想用它来污染外部类.将声明保留在内部类中的其他原因是,如果我将AnotherClass成员移动到外部类,我将不得不从内部类中删除static修饰符或将其添加到外部类成员.

mre*_*isz 5

@Inject仅在spring实例化对象时才使用注释.由于你注释了外部@Named,spring会从中创建一个bean并SomeClass正确地注入实例.另一方面inner,可能是您手动实例化的,因此Spring无法注意到此注释并对其执行某些操作.

这不是关于内部或顶级课程,而是关于谁创造了对象.