@Componentpublic class AA { private static Object variable; @Autowired public AA(Object variable) { AA.variable = variable; } }
原理解答:在spring进行组建注册的时候会进行初始化,初始化后赋值到变量,所以还有一个遗留问题,就是不能在构造器内调用静态变量
还有一种方法
就是在初始化完成后再启动一个方法为其赋值(本人没试过,不过感觉可行就记下来了)不过此方法会浪费一点栈空间就是了,因为初始化后此实例就一直存在了,那么它的引用也会一直存在,如果不是那种对代码要求到极致的项目可用试试用这种
@Componentpublic class Boo { private static Foo foo; @Autowired private Foo tFoo; @PostConstruct public void init() { Boo.foo = tFoo; } public static void randomMethod() { foo.doStuff(); }}