@Resource 注解的含义

LM1*_*M10 13 java annotations

我无法理解@Resource注释的含义。我查看了在线资源,但它们似乎以难以理解的方式解释了相同的内容。@Resource如果可能的话,有人可以以简单的方式解释 的含义吗?

谢谢 !

J-A*_*lex 26

首先,要了解这一点,@Resource您需要了解控制反转 (IoC)

控制反转是软件开发中的一个原则,即对象的控制应转移到容器或框架。

依赖注入(DI)是 IoC 实现的一种模式,其中被反转的控制是对象依赖关系的设置。将对象与其他对象组合(注入)的行为是由容器完成的,而不是由对象本身完成的。

使用 DI 框架(如Spring IoCEJB),您正在创建 POJO 并配置框架(以这种方式配置的 POJO 称为 a Bean)。ABean可能有不同的作用域,如单例(每个容器 1 个对象实例)、原型(每次注入或显式调用创建对象的新实例)等。

在此处输入图片说明

到现在为止还挺好。下一步是什么?是时候使用我们的beans 了

@Resource是有助于从容器中提取bean的注释。

有几个查找选项可以提取 bean:

  • 按名称匹配
  • 按类型匹配
  • 按预选赛匹配

@Resource不带任何参数使用将触发Match by Type查找类型。

有一个使用或@Resource使用字段注入和 Spring 框架的示例,其中包含基于 Java 的配置和按名称匹配

@Configuration
public class ApplicationContext {
 
    // Put the bean into the spring container
    @Bean(name = "userFile")
    public File userFile() {
        File file = new File("user.txt");
        return file;
    }
}

@Service
class UserService {

    // Ask the container to get the bean and 'put' it here (inject)
    @Resource(name = "userFile")
    private File userFile;

}
Run Code Online (Sandbox Code Playgroud)

@Resource 通常用于注入数据源、单例服务、上下文配置等。

  • 根据Spring文档(https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-resource-annotation),不带任何参数的@Resource将触发按名称匹配:“如果没有明确指定名称,则默认名称源自字段名称” (5认同)