Spring 面试题, Spring Bean 注入容器有哪些方式?
Spring 面试题, Spring Bean 注入容器有哪些方式?
QA
Step 1
Q:: Spring Bean 注入容器有哪些方式?
A:: Spring Bean 注入容器主要有三种方式:1) 构造函数注入:通过类的构造函数将依赖项注入Bean中。2) Setter方法注入:通过Bean的Setter方法注入依赖项。3) 注解方式注入:使用@Autowired, @Inject或@
Resource注解将依赖项注入Bean中。注解方式是最常用且灵活的注入方式。
Step 2
Q:: 构造函数注入和Setter方法注入的区别是什么?
A:: 构造函数注入在Bean实例化时必须提供所有的依赖,适合于必须的依赖项,保证依赖不可变性。Setter方法注入允许在Bean实例化后注入依赖,适合于可选的依赖项,但依赖项可能在运行时被修改。构造函数注入有助于实现不可变对象,减少错误。
Step 3
Q:: 什么是@
Primary注解,什么时候使用?
A:: @Primary注解用于指定多个同类型Bean中哪个Bean应该优先注入。通常用于避免因同类型的多个Bean注入导致的歧义性问题。当没有特别指定Bean时,Spring会优先选择标注了@
Primary的Bean。
Step 4
Q:: 如何处理Spring中的循环依赖?
A:: Spring通过三级缓存解决循环依赖问题。1) 一级缓存存储完全初始化的单例Bean,2) 二级缓存存储实例化但未注入依赖的单例Bean,3)
三级缓存存储实例化且暴露了代理对象的单例Bean。当A依赖B,B又依赖A时,Spring能够通过缓存中的代理对象解决循环依赖问题。构造函数注入无法解决循环依赖,必须使用Setter注入或字段注入。
用途
Spring Bean注入是Spring框架的核心特性之一,它决定了应用程序中依赖的管理方式。面试中问及这些问题,目的是评估候选人对依赖注入模式、依赖管理的理解程度,以及如何通过不同的方式实现松耦合、增强可测试性和可维护性。在生产环境中,选择合适的注入方式可以提升应用程序的灵活性、扩展性,同时避免常见的错误如循环依赖等。\n相关问题
🦆
Spring中的依赖注入与依赖查找有何区别?▷
🦆
Spring Bean的生命周期是什么?▷
🦆
如何在Spring中实现Bean的作用域Scope?▷
🦆
Spring的@Qualifier注解有什么作用?▷