`

两分钟学会自动注入@Resource和@Inject注解

阅读更多

上文系统的介绍了spring自动装配@Autowired注解的使用,没有查看的可以点击查看,@Autowired注解大家使用过,那今天的两个自动注入可能就不是每个同学都有使用过,不信你看

 

今天将从以下几方面来学习一下@Resource和@Inject注解

  • @Resource注解的使用演示

  • @Inject注解的使用演示

  • @Resource和@Inject注解与@Autowired注解的区别

 

 

1,@Resource注解的使用演示

 

把上文中的例子注入修改如下:

 

//    @Qualifier(value="userDao")
//    @Autowired(required=false)
@Resource
private UserDao userDao2;

 

运行测试类结果如下:

 

实例bean为 === UserService [userDao=UserDao [version=2]]

 

让我们@Resource注解中加上一个name参数如下:

 

@Resource(name="userDao")

 

继续运行测试结果如下:

 

实例bean为 === UserService [userDao=UserDao [version=0]]

 

从运行结果我们可以发现:

  • @Resource注解默认根据参数名字寻找bean注入

  • @Resource也可以通过name参数指定需要注入的bean

  • @Resource注解不支持spring的@Primary注解优先注入

 

2,@Inject注解的使用演示

 

在演示@Inject注解前需要先在pom文件中增加如下依赖:

 

<dependency>
           <groupId>javax.inject</groupId>
           <artifactId>javax.inject</artifactId>
           <version>1</version>
</dependency>

 

UserService类UserDao注入修改为如下:

 

@Inject
private UserDao userDao;

 

对应的主配置文件如下:

 

@Primary
@Bean(value = "userDao2")
public UserDao getUserDao(){
       UserDao userDao = new UserDao();
       userDao.setVersion(2);
       return userDao;
}

 

运行测试类结果如下:

 

实例bean为 === UserService [userDao=UserDao [version=2]]

 

UserService类注入代码修改如下:

 

@Named("userDao")
private UserDao userDao;

 

运行测试类结果如下:

 

实例bean为 === UserService [userDao=UserDao [version=0]]

 

从以上运行结果我们可以得出:

  • @Inject注解默认是根据参数名去寻找bean注入

  • @Inject注解支持spring的@Primary注解优先注入

  • @Inject注解可以增加@Named注解指定注入的bean

 

3,@Resource和@Inject注解与@Autowired注解的区别

 

不同点

  1. @Autowired是spring专有注解,@Resource是java中JSR250中的规范,@Inject是java中JSR330中的规范

  2. @Autowired支持参数required=false,@Resource,@Inject都不支持

  3. @Autowired,和@Inject支持@Primary注解优先注入,@Resource不支持

  4. @Autowired通过@Qualifier指定注入特定bean,@Resource可以通过参数name指定注入bean,@Inject需要@Named注解指定注入bean

 

相同点

 

三种注解都可以实现bean的注入

 

以上是今天文章的所有内容,欢迎大家吐槽

 

推荐阅读

 

深入理解spring生命周期与BeanPostProcessor的实现原理

 

250G偷懒必看资料全集

 

更多优质文章请关注以下公众号查阅:

 

分享到:
评论

相关推荐

    详解Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理

    Spring 依赖注入:@Autowired,@Resource 和@Inject 区别与实现原理 Spring 依赖注入是指在应用程序中将对象之间的依赖关系自动装配的过程。Spring 框架提供了多种依赖注入方式,包括 @Autowired、@Resource 和@...

    (转)Spring 3.0 注解注入详解

    为了更深入地学习Spring 3.0的注解注入,你可以阅读提供的文档`Spring 3注解注入.docx`,它应该包含了详细的示例和解释,帮助你更好地理解和掌握这一重要特性。通过熟练运用注解注入,可以显著提升代码的可读性和可...

    Spring依赖注入——java项目中使用spring注解方式进行注入.rar

    2. 注解注入:在需要注入依赖的类中,使用`@Autowired`、`@Qualifier`、`@Resource`或`@Inject`等注解标记字段或方法。 3. 配置扫描:在Spring配置文件中,使用`&lt;context:component-scan&gt;`标签指定需要扫描的包,使...

    Java-Spring各种依赖注入注解的区别.doc

    Spring提供了多种注解来实现依赖注入,包括@Autowired、@Inject和@Resource。它们各有特点,下面将详细解释它们之间的区别。 首先,@Autowired是Spring框架自身提供的注解,主要用于类型匹配的自动装配。它具有一个...

    spring注解实现注入.zip

    其中,`@Autowired`是用于自动装配依赖的注解,Spring会根据类型或名称自动匹配并注入合适的bean。`@Qualifier`注解则用来指定注入哪个特定的bean,当有多个相同类型的bean时非常有用。此外,`@Resource`注解也是...

    关于spring boot中几种注入方法的一些个人看法

    @Autowired 的工作原理是,在启动 Spring IoC 时,容器自动装载了一个 AutowiredAnnotationBeanPostProcessor 后置处理器,当容器扫描到 @Autowired、@Resource 或 @Inject 时,就会在 IoC 容器自动查找需要的 bean...

    Spring 自动装配及其注解

    在Spring框架中,自动装配...理解并熟练掌握自动装配的原理和注解,能够更好地利用Spring框架的优势,构建更加灵活和可维护的Java应用。在实际使用中,应根据项目需求和bean的关系选择合适的装配策略,以达到最佳效果。

    学习Spring笔记_Annotation(注解)_Autowired_Qualifier

    除了`@Autowired`,Spring框架还提供了其他的依赖注入注解,如`@Resource`(主要用于JSR-250规范,基于名称的注入)和`@Inject`(JSR-330规范,基于类型和名称的注入)。这些注解在不同的场景下有不同的优势,开发者...

    JavaEE5.0.zip_JavaEE5_injection in java_javaEE5.0_javaee5.0 下载

    Java EE 5.0中实现依赖注入的方式主要有两种:JSR-250规范的`@Resource`注解和JSR-330规范的`@Inject`注解。`@Resource`注解主要用于资源注入,如数据库连接池、JMS队列等,而`@Inject`注解则用于一般的依赖注入。 ...

    Spring常用注解(收藏大全).docx

    Spring 提供了多种依赖注入方式,例如 `@Autowired`、`@Inject` 和 `@Resource`。 * `@Autowired`:由 Spring 提供,用于依赖注入。 * `@Inject`:由 JSR-330 提供,用于依赖注入。 * `@Resource`:由 JSR-250 提供...

    spring注解方式解析

    在Spring中,我们可以使用注解如`@Inject`、`@Resource`、`@Autowired`以及构造函数、setter方法、field级别的注解来实现依赖注入。例如: ```java @Component public class UserRepository { private ...

    Android资源注入Roboguice

    4. **资源注入**:可以使用`@Resource`注解来注入Android资源,例如`@Resource(R.string.app_name)`将注入应用名称的字符串资源。 **使用示例** ```java public class MainActivity extends RoboActivity { @...

    2022年EJB 3.0开发指南之依赖注入Java教程.docx

    在EJB 3.0中,`@Resource`注解用于标记一个字段或方法,以便在运行时由容器自动注入所需的依赖。例如,对于数据源的注入,可以直接在字段上添加`@Resource`注解,指定`jndiName`为数据源的JNDI名称。这使得代码更加...

    spring注解大全整理.docx

    * @Resource:JSR-250 提供的注解,用于资源注入 * @Inject:JSR-330 提供的注解,用于依赖注入 三、切面编程 * @Aspect:声明一个切面(就是说这是一个额外功能) * @After:后置建言(advice),在原方法前执行 ...

    javax.annotation-3.1.2.2-sources.jar.zip

    @Inject注解允许开发人员声明依赖注入,而无需指定注入的来源,这在某些情况下比@Resource更灵活。 6. @NotNull:这个注解通常用于参数验证,表明该参数不能为null。在Java EE 6及以上版本中,这个注解可以配合Bean...

    Roboguice实现依赖注入

    总结来说,Roboguice通过注解和注入器实现了Android应用中的依赖注入,简化了对象的创建和管理,提高了代码的可读性和可测试性。使用Roboguice,开发者可以专注于业务逻辑,而无需担心繁琐的依赖关系处理。

    如何完成spring的最小化XML配置

    `@Resource`注解主要用于注入JSR-250资源,如JNDI绑定的对象,也可以用于注入Bean,但默认按名称装配。 三、使用注解装配的注意事项 - 当多个Bean符合`@Autowired`的条件时,可以使用`@Qualifier`指定具体的Bean...

    spring的相关注解

    - `@Inject`和`@Named`是JSR330规范的注解,功能与`@Autowired`和`@Qualifier`相似,跨框架兼容性更强。 - `@Resource`是JSR250规范的注解,通常用于注入JSR250标准的资源,它的行为与`@Autowired`类似,但默认按...

    spring注解

    Spring从2.5版本开始引入了大量的注解,使得Bean定义和依赖注入可以通过注解轻松实现,提高了开发效率和代码的可读性。 1. **注解配置的优势** - **简洁性**:注解可以直接嵌入到类或方法中,避免了XML配置文件的...

Global site tag (gtag.js) - Google Analytics