@resource的按照类型查找和@autoweired的按照类型查找有什么不一样?最后不都是按照类型查找吗
时间: 2024-02-29 22:53:39 浏览: 52
1.@Resource是按名称进行注入的,属于java自带的。@Autowired是按类型进行注入的,属于Spring。.pdf
虽然 `@Resource` 和 `@Autowired` 都可以按照类型进行查找,但它们的具体实现方式不同,导致它们的用法和限制也有所不同。
具体来说,`@Resource` 先按照名称进行查找,如果找到了名称匹配的 Bean,则直接注入;如果没有找到,则按照类型进行查找。因此,如果在容器中有同类型的多个 Bean,使用 `@Resource` 注入时需要指定名称,否则会抛出 `NoUniqueBeanDefinitionException` 异常。
而 `@Autowired` 则直接按照类型进行查找,如果找到了多个类型匹配的 Bean,则会抛出 `NoUniqueBeanDefinitionException` 异常,需要手动指定需要注入的 Bean。此外,`@Autowired` 还支持根据名称进行查找,可以使用 `@Qualifier` 注解指定需要注入的 Bean 的名称。
因此,在实际使用中,`@Resource` 更适合按照名称进行注入,适用于单一 Bean 的情况;而 `@Autowired` 更适合按照类型进行注入,适用于多个类型相同但名称不同的 Bean 的情况。
阅读全文