@Autowired 在内部类中不起作用

Age*_*ntX 5 java spring dependency-injection inner-classes

我在内部类中有一个被@Autowired 的类。但是在执行它时会抛出一个空指针异常,而在外部类中自动装配时它可以正常工作

class outer {
   ...
   class inner {
       @Autowired
       private var somevar;
       private process () {
           somevar.someMethod();
   }
}
Run Code Online (Sandbox Code Playgroud)

知道为什么这不起作用吗?somevar.someMethod();线正在生成 NPE。

gri*_*rid 4

外部类管理内部实例创建有什么原因吗?例如,内部对象是否需要对外部对象的引用?如果是的话,你就无法用它来制作豆子。仅当内部类是静态的时,它们才可以是 Bean。因此,您必须自己管理所有依赖项(创建它的代码应该完成这项工作)。

如果不需要对外部实例进行这样的引用,请将内部类设为静态,使用@Component进行注释,然后让 spring 完成其余的依赖注入。