嗨,我是工作4年的Mic粉,面试的时候遇到了这样的问题。《介绍SpringIOC的工作流程》。他说回答得不是很好,希望我能帮他整理一下。关于这个问题,我们来看看普通人和专家的回答。普通人:嗯。.......师父:那我从几个方面来回答这个问题。什么是IOCBean声明方式IOC工作流IOC的全称是InversionOfControl,即控制反转。它的核心思想是将对象的管理权限交给容器。如果应用需要使用对象实例,可以直接从IOC容器中获取。这样设计的好处是降低了程序中对象之间的耦合度。使程序的整个架构更加灵活。Spring中定义bean的方式有很多种,比如XML中的标签、@Service、@Component、@Repository、@Configuration配置类中的@Bean注解等。Spring启动时会解析这些bean并保存它们在IOC容器中。SpringIOC的工作流程大致可以分为两个阶段。第一阶段是IOC容器的初始化。这个阶段主要是根据程序中定义的Bean声明方式,比如XML或者注解,解析加载后生成一个BeanDefinition,然后将这个BeanDefinition注册到IOC容器中。通过注解或者xml声明的Bean会被解析得到一个BeanDefinition实体,里面包含了这个Bean定义的基本属性。最后将这个BeanDefinition保存到一个Map集合中,这样就完成了IOC的初始化。IoC容器的作用就是处理和维护这些注册的bean的定义信息,这是IoC容器控制反转的核心。第二阶段,完成bean初始化和依赖注入,进入第二阶段。这个阶段会做两件事,通过反射初始化没有lazy-init属性的单例bean。完成Bean依赖注入。第三阶段,Bean的使用通常是通过@Autowired或者BeanFactory.getBean()从IOC容器中获取指定的bean实例。另外,对于layy-init属性的设置和非单例bean的实例化,每次获取bean对象,调用bean的初始化方法完成实例化,SpringIOC容器不会管理这些豆子。以上是我对这个问题的理解。综上所述,对于工作原理或者工作流程的问题,大家一定要注意回答的结构和节奏。否则,面试官会感到一头雾水,听不懂,会大大降低面试的效果。楼主的回答逻辑很清楚,可以参考一下。喜欢我作品的朋友记得点赞收藏关注。版权声明:除特别声明外,本博客所有文章均采用CCBY-NC-SA4.0许可协议。转载请注明来自Mic带你学建筑!如果本文对您有帮助,请给个关注和点赞。您的坚持是我不断创作的动力。欢迎关注同名微信公众号获取更多技术干货!