java面试,resource和autowired的区别
时间: 2023-09-21 12:04:04 浏览: 82
在Java中,@Resource和@Autowired都是用于依赖注入的注解,它们的作用都是告诉Spring容器要为指定的属性或方法参数注入一个Bean对象。但是,它们之间有一些区别,如下所述:
1. @Autowired是Spring提供的注解,而@Resource是JavaEE提供的注解。
2. @Autowired是根据类型进行自动装配的,如果有多个类型相同的Bean,则会根据属性名进行匹配。而@Resource是根据名称进行装配的,如果没有指定name属性,则会默认使用属性名作为名称进行匹配。
3. @Autowired是可以标注在构造方法、属性、方法或参数上的,而@Resource只能标注在属性或方法上。
4. @Autowired是通过反射机制实现的,而@Resource是通过JavaEE提供的JNDI(Java Naming and Directory Interface)机制实现的。
综上所述,@Autowired和@Resource都可以实现依赖注入,但在使用上还是有一些区别的。
相关问题
面试问@autowired和@resource区别该如何回答
`@Autowired` 和 `@Resource` 都是 Java 中常用的注解,用于实现依赖注入。它们的主要区别在于:
1. `@Autowired` 是 Spring 框架提供的注解,而 `@Resource` 是 Java EE 提供的注解,不过在 Spring 中也可以使用 `@Resource`。
2. `@Autowired` 默认按照类型进行注入,如果有多个同类型的 Bean 则会抛出异常,可以结合 `@Qualifier` 指定具体的 Bean。而 `@Resource` 默认按照名称进行注入,可以通过 `name` 属性指定具体的 Bean,也可以通过 `type` 属性指定类型。
3. `@Autowired` 可以用在构造函数、setter 方法和字段上,而 `@Resource` 只能用在字段上。
因此,可以简单地回答:
`@Autowired` 和 `@Resource` 都是用于实现依赖注入的注解,其中 `@Autowired` 是 Spring 框架提供的,而 `@Resource` 是 Java EE 提供的。它们的主要区别在于注入方式的不同,`@Autowired` 默认按照类型进行注入,而 `@Resource` 默认按照名称进行注入。同时,它们的使用场景也稍有不同,`@Autowired` 可以用在构造函数、setter 方法和字段上,而 `@Resource` 只能用在字段上。
@Resource与@Autowired的区别
@Resource与@Autowired是用来实现依赖注入的注解,但它们在以下几个方面有所不同:
1. 来源不同:@Autowired来自于Spring框架,而@Resource来自于Java的JSR-250规范。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [面试突击:@Autowired 和 @Resource 有什么区别?你学会了吗?](https://blog.csdn.net/Candyz7/article/details/126578224)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文