@Autowired和@Resouce,@Resouces的区别

1.ag

Spring 是一个非常流行的 Java 开发框架,它提供了很多便利的功能来简化开发,在这些功能中,注解自动装配是其中的一项。在 Spring 中,有两个主要的注解可以用于自动装配:@Autowired 和 @Resource。

@ Autowired 注解是 Spring 的核心注解之一。使用它可以自动将一个 bean 注入到另一个 bean 中。它可以用于构造函数、属性和方法上。当使用 @Autowired 时,Spring 会在容器中查找一个与被注入对象类型相匹配的实例,并自动将其注入到目标对象中。

一个示例代码如下:

@Component
public class UserService {
    @Autowired
    private UserDao userDao;
}

在这个例子中,UserService 使用 @Autowired 注解将 UserDao 自动注入到这个类中。

@ Resource 注解也可以将一个 bean 注入到另一个 bean 中,但是与 @Autowired 不同的是,它是 Java 的原生注解,并且没有特定的 Spring 实现。 @Resource 可以注入任何类型的 bean,并且可以通过名称或类型来指定要注入的 bean。

一个示例代码如下:

@Component
public class UserService {
    @Resource(name="userDao")
    private UserDao userDao;
}

在这个例子中,UserService 使用 @Resource 注解将通过名字 userDAo 查找 UserDao 类型的 bean 并注入它。

尽管 @Autowired 和 @Resource 在作用上有些相似,但是它们在细节上还是存在一些差别的。其中最显著的差别是 @Autowired 是 Spring 的特有注解,而 @Resource 是 Java 标准注解。此外,@Autowired 默认通过类型进行自动装配,而 @Resource 默认通过名称进行自动装配。如果您在使用这些注解时遇到问题,请注意看您的注解使用方式。总之,在选择注解时,需要考虑具体情况和项目需求。无论是 @Autowired 还是 @Resource,都可以为我们提供便利的 bean 自动装配功能。

做个总结

  • @Resource注解是JavaEE提供的注解,而 @Autowired注解是Spring框架提供的注解。
  •  @Resource注解可以用于字段、setter方法和构造函数上,用于标记需要注入的依赖。它可以通过 name属性指定依赖的名称,或者通过 type 属性指定依赖的类型。如果没有指定属性,则默认按照名称进行匹配。而 @Autowired注解主要用于字段、setter方法和构造函数上,用于标记需要注入的依赖。它可以根据类型进行自动装配,如果有多个匹配的依赖,可以使用 @Qualifier 注解指定具体的依赖名称。
  • @Resource注解是JavaEE的规范注解,可以在不依赖Spring框架的情况下使用。而 @Autowired 注解是Spring框架提供的注解,需要依赖Spring的上下文环境来实现注入。

总的来说,@Resource 注解是JavaEE提供的通用注解,而 @Autowired注解是Spring框架特定的注解,用于实现依赖注入。在使用上, @Resource 注解更加灵活,可以通过名称或类型进行匹配,而 @Autowired 注解更加方便,可以自动装配依赖。

2.awjyk
顺便说下 @Resources和@Resource的区别

@Resources 注解是JavaEE提供的注解之一,用于依赖注入。与 @Resource`注解相比, @Resources 注解可以用于标记多个依赖的注入。

以下是 @Resources注解的用法:

  •  @Resources注解可以用于字段、setter方法和构造函数上,用于标记需要注入的多个依赖。
  • 与@Resource注解不同, @Resources注解不需要指定名称或类型属性。它会自动查找并注入与字段或方法参数类型匹配的依赖。
  • 当存在多个匹配的依赖时,@Resources 注解可以用于标记多个依赖的注入。

总的来说, @Resources 注解是JavaEE提供的用于多个依赖注入的注解。它可以在字段、setter方法和构造函数上使用,并自动匹配并注入与字段或方法参数类型匹配的依赖。

posted @ 2023-09-02 20:17  达达鸭i  阅读(159)  评论(2)    收藏  举报