根据上图地址值可以看出,IOC创建的放在核心容器中的单例对象a,但和我新new出来的在核心容器之外的对象b并不是同一个。
我每次使用Autowired注解注入的属性,其实都是向核心容器里面的那个对象注入的。我accountController 对象中的accountService属性,注入的时候我只能放到核心容器里面的a对象中,b对象无法获取这个属性的赋值。
相当于镜子里面的东西只能在镜子里面是用,而无法把镜子里面的东西放到现实中。(平行空间)
两个平行空间,一个空间里面的我被人给了一大笔钱,可实际上现实空间的我依然是一个穷光蛋,没有获得那笔钱。
所以使用IOC和DI时,一个对象的属性需要被DI赋值时,这个对象必须被IOC在核心容器中。
当然属性是对象是,赋值的值也必须在核心容器中。