1. Spring Ioc实现原理?
2. BeanFactory 和 ApplicationContext 有何区别?
Spring~基础:ApplicationContext和BeanFactory的区别与联系
3. Spring有几种依赖注入方式,区别是什么?
SpringBoot 构造器注入、Setter方法注入和Field注入对比
4. Bean的生命周期?
5. 依赖注入的循环依赖问题
结合上文中的结论及展示的源码,可知第三级缓存的意义就是延迟代理对象的生成,如果只有两级缓存,那对于需要生成代理对象的bean来说,不管有没有循环依赖(IOC容器实际上没法提前知道两个bean是否存在循环依赖),为了防止在循环依赖时,属性注入的bean找不到对应的代理对象,就要提前在实例化阶段就生成代理对象放至二级缓存中。但如果有了三级缓存,情况就可以变的不同,如果没有循环依赖,就不会触发三级缓存中的ObjectFactory接口,也就不会生成代理对象了。
6. @Autowired 与 @Resource 的区别?
为什么Spring不推荐使用@Autowired注解?关于这个问题,还有一点就是 @Autowired 与 Spring 强耦合,如果换了框架则自动注入失效,@Resource 是 Java 标准,每个框架都支持。
7. Spring AOP 实现原理?
8. Spring 中的事务?
- 深入浅出Spring事务的实现原理,事务的实现不建议看这篇
- spring 事务原理,看这一篇
9. 什么是 AspectJ?
面试官:什么是AOP?Spring AOP和AspectJ的区别是什么?
10. @ConditionalOnBean和@ConditionalOnMissingBean 的使用?
@ConditionalOnBean和@ConditionalOnMissingBean注解默认情况
11. @Import 的使用?