Spring--高频面试题

404 阅读2分钟

1. Spring Ioc实现原理?

  1. 反射 + 工厂:一文带你深入剖析Spring IOC 实现原理
  2. Spring 之依赖注入底层原理

2. BeanFactory 和 ApplicationContext 有何区别?

Spring~基础:ApplicationContext和BeanFactory的区别与联系

3. Spring有几种依赖注入方式,区别是什么?

SpringBoot 构造器注入、Setter方法注入和Field注入对比

4. Bean的生命周期?

  1. 如何记忆 Spring Bean 的生命周期
  2. Spring Bean生命周期,好像人的一生。。

5. 依赖注入的循环依赖问题

  1. Spring中的循环依赖及解决
  2. Spring使用三级缓存解决循环依赖
  3. Spring循环依赖三级缓存是否可以去掉第三级缓存?

结合上文中的结论及展示的源码,可知第三级缓存的意义就是延迟代理对象的生成,如果只有两级缓存,那对于需要生成代理对象的bean来说,不管有没有循环依赖(IOC容器实际上没法提前知道两个bean是否存在循环依赖),为了防止在循环依赖时,属性注入的bean找不到对应的代理对象,就要提前在实例化阶段就生成代理对象放至二级缓存中。但如果有了三级缓存,情况就可以变的不同,如果没有循环依赖,就不会触发三级缓存中的ObjectFactory接口,也就不会生成代理对象了。

6. @Autowired 与 @Resource 的区别?

为什么Spring不推荐使用@Autowired注解?关于这个问题,还有一点就是 @Autowired 与 Spring 强耦合,如果换了框架则自动注入失效,@Resource 是 Java 标准,每个框架都支持。

7. Spring AOP 实现原理?

  1. 静态和动态代理模式
  2. cglib代理
  3. 浅析Spring中AOP的实现原理——动态代理

8. Spring 中的事务?

  1. 深入浅出Spring事务的实现原理,事务的实现不建议看这篇
  2. spring 事务原理,看这一篇

9. 什么是 AspectJ?

面试官:什么是AOP?Spring AOP和AspectJ的区别是什么?

10. @ConditionalOnBean和@ConditionalOnMissingBean 的使用?

@ConditionalOnBean和@ConditionalOnMissingBean注解默认情况

11. @Import 的使用?

Spring的@Import 注解的作用与用法

参考阅读

  1. 2023最新整理上千道Java面试攻略,近500页PDF文档