Spring框架中的IOC容器是如何工作的?