后端经典面试题合集, 有哪些注解可以注入 Bean?@Autowired 和 @Resource 的区别?
后端经典面试题合集, 有哪些注解可以注入 Bean?@Autowired 和 @Resource 的区别?
QA
Step 1
Q:: 有哪些注解可以注入 Bean?
A:: 在 Spring 框架中,以下注解可以用来注入 Bean:
1. @
Autowired:用于自动注入 Spring 管理的 Bean。
2. @
Resource:根据名称或类型注入 Bean,可以指定具体的 Bean 名称。
3. @Inject:Java 标准的注入注解,功能类似于 @
Autowired。
4. @
Value:注入基本类型的值,通常用于注入配置文件中的值。
5. @Qualifier:与 @Autowired 或 @
Inject 搭配使用,指定注入的具体 Bean。
Step 2
Q:: @Autowired 和 @
Resource 的区别?
A:: @Autowired 和 @
Resource 都用于注入依赖,但它们有一些关键区别:
1. 来源不同:@Autowired 是 Spring 框架提供的注解,而 @Resource 是 JSR-250
规范中的注解。
2. 注入方式:@Autowired 默认按类型注入,可以与 @Qualifier 结合按名称注入;@
Resource 默认按名称注入,如果名称匹配失败则按类型注入。
3. 兼容性:@Resource 适用于 Java EE 和 Spring 项目,@
Autowired 主要用于 Spring 项目。
Step 3
Q:: 如何使用 @
Qualifier?
A:: @Qualifier 注解用于在存在多个同类型 Bean 时,指定需要注入的具体 Bean。通常与 @
Autowired 一起使用,示例代码如下:
@Autowired
@Qualifier("specificBeanName")
private MyBean myBean;
这里 @Qualifier("specificBeanName") 表示注入名称为 'specificBeanName'
的 Bean。
Step 4
Q:: Spring 中的依赖注入有哪些方式?
A:: Spring 中主要有三种依赖注入方式:
1.
构造函数注入:通过构造函数将依赖传递给 Bean。
2.
Setter 方法注入:通过 Setter 方法将依赖注入到 Bean 中。
3.
接口注入(较少使用):通过实现特定接口进行依赖注入。
Step 5
Q:: 什么是 Spring 的 IoC 容器?
A:: Spring 的 IoC(Inversion of Control,控制反转)容器是管理 Bean 生命周期和依赖注入的核心组件。IoC 容器通过配置元数据(如 XML 文件或注解)创建、配置和管理对象(Bean),并自动处理对象之间的依赖关系。