后端经典面试题合集, 有哪些注解可以注入 Bean?@Autowired 和 @Resource 的区别?
后端经典面试题合集, 有哪些注解可以注入 Bean?@Autowired 和 @Resource 的区别?
QA
Step 1
Q:: 有哪些注解可以注入 Bean?
A:: 在 Spring 框架中,注入 Bean 的注解主要有以下几种:
1. @Autowired:
这是 Spring 提供的用于自动注入依赖的注解。它可以应用在构造函数、方法、字段上,Spring 会自动查找与注入点匹配的 Bean。
2. @Qualifier: 通常与 @
Autowired 一起使用,用于当多个 Bean 可以注入时,指定要注入哪个具体的 Bean。
3. @Resource: 这是 Javax 提供的注解,类似于 @
Autowired,但它是按名称进行注入的,如果名称找不到匹配的 Bean,再按类型注入。
4. @Inject: 这是 JSR-330 提供的注解,功能类似于 @Autowired,但不支持 @
Qualifier 这样的限定符。
5. @Value:
用于注入配置文件中的值,例如注入一个属性文件中的值或系统环境变量。
Step 2
Q:: @Autowired 和 @
Resource 的区别?
A:: @Autowired 和 @
Resource 的主要区别如下:
1. 来源不同:@Autowired 是 Spring 提供的注解,而 @
Resource 是 Javax 提供的注解。
2. 注入方式不同:@Autowired 默认按类型注入,而 @Resource 默认按名称注入。如果 @
Resource 指定了 name 属性,则按名称注入;如果没有指定 name 属性,则按类型注入。
3. 依赖检查:@Autowired 可以与 @Primary、@Qualifier 等注解一起使用来解决 Bean 注入时的歧义问题,而 @
Resource 只能通过名称或类型匹配。
4. 作用范围:@Autowired 可以在 Spring 容器管理的任何地方使用,而 @Resource 主要用于 J2
EE 容器的管理。