【收藏吃灰系列-spring】IOC&AOP相关面试题总结

请教下,【收藏吃灰系列-spring】IOC&AOP相关面试题总结
最新回答
呆萌没商量

2026-01-12 10:58:22

IOC&AOP相关面试题总结如下:

IOC相关:

  1. 什么是IOC?

    • IOC即控制反转,是一种设计思想,它将对象的创建和依赖关系的管理交由Spring容器处理,而不是在代码中显式地创建和管理对象。
  2. BeanFactory和ApplicationContext的区别是什么?

    • BeanFactory是Spring的基础容器,提供了基本的bean配置和管理功能。
    • ApplicationContext是BeanFactory的子接口,提供了更丰富的功能和上下文管理,如事件发布、国际化支持等。
  3. Spring管理bean的生命周期是怎样的?

    • Spring通过回调方法管理bean的生命周期,主要包括初始化后的postconstruct和销毁前的predestroy。
  4. bean的作用域有哪些?

    • Spring中bean的作用域主要有单例和原型两种。单例作用域意味着在整个容器中只存在一个bean实例;原型作用域则每次请求都会创建新的bean实例。
  5. 如何解决Spring中的循环依赖问题?

    • Spring通过设计模式中的工厂模式解决循环依赖问题。当存在依赖关系时,Spring会先初始化一个空的bean实例放入缓存,然后在后续的依赖链中引用缓存中的实例,待依赖完成后再进行进一步初始化。

AOP相关:

  1. 什么是AOP?

    • AOP是一种编程范式,它允许开发者在不修改业务逻辑代码的情况下,将横切关注点从业务逻辑中分离出来。
  2. Spring AOP是如何实现的?

    • Spring AOP基于动态代理实现。如果目标对象实现了接口,会使用JDK Proxy;否则,通过Cglib生成子类。
  3. JDK Proxy和Cglib的区别是什么?

    • JDK Proxy要求目标对象为接口,是为了方便Proxy自动生成符合接口规范的代理类。Cglib则通过生成子类的方式实现代理,不需要目标对象实现接口。
  4. Spring AOP和AspectJ AOP的区别是什么?

    • Spring AOP和AspectJ AOP的主要区别在于底层实现机制和API的丰富程度。Spring AOP是基于动态代理的轻量级实现,而AspectJ AOP则提供了更强大的功能和更丰富的API。