`

Spring_@Autowired Vs Java_@Resource 的区别

 
阅读更多

一、 @Autowired和@Resource都可以用来装配bean,都可以写在字段上,或者方法上。

二、 @Autowired属于Spring的;@Resource为JSR-250标准的注释,属于J2EE的。

三、 @Autowired默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,例如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:

@Autowired() 

@Qualifier("baseDao")

private BaseDao baseDao;

四、 @Resource,默认安装名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。 例如:

@Resource(name="baseDao")

private BaseDao baseDao;

五、 推荐使用:@Resource注解在字段上,这个注解是属于J2EE的,减少了与spring的耦合。这样代码看起就比较优雅。

分享到:
评论

相关推荐

    Spring使用@Autowired注解自动装配

    在Spring框架中,`@Autowired`注解是一个关键特性,用于简化依赖注入的过程。依赖注入是一种设计模式,它允许我们解耦代码,提高模块的可测试性和可维护性。在这个主题中,我们将深入探讨`@Autowired`的工作原理、...

    【Java面试】@Resource 和 @Autowired 的区别.doc

    在 Spring 框架中,@Resource 和 @Autowired 是两种常用的依赖注入方式,但是它们之间存在着一些关键的区别。 首先,让我们来了解 @Autowired 注解。@Autowired 是 Spring 框架提供的一个注解,默认是根据类型来...

    Spring In Action 使用@Autowired 和@ Resource 自动装配Bean

    与`@Autowired`不同的是,`@Resource`在Java EE环境中也适用,不仅限于Spring框架。 在实际应用中,选择`@Autowired`还是`@Resource`主要取决于你的需求。如果你更关心依赖的类型,`@Autowired`可能是更好的选择;...

    1.@Resource是按名称进行注入的,属于java自带的。@Autowired是按类型进行注入的,属于Spring。.pdf

    Spring框架是Java领域中实现DI的典型代表,提供了多种注解来支持这一机制,其中两个常用的注解是`@Resource`和`@Autowired`。虽然它们都可以用来实现依赖注入,但它们的用法和原理有所不同。 首先,`@Resource`注解...

    SSH笔记-通过@Autowired配置注入关系

    8. **`@Autowired`的替代品**:Spring还提供了一些其他的注解,如`@Resource`(基于名称的注入)和`@Value`(用于注入基本类型或属性值)作为`@Autowired`的补充。 结合前一篇文章中的注解笔记,我们可以推断出上一...

    详解Spring注解--@Autowired、@Resource和@Service

    Spring注解详解 -- @Autowired、@Resource和@Service Spring框架中有三个非常重要的注解,即@Autowired、@Resource和@Service。这三个注解都是Spring框架中最常用的注解,它们都是用于解决Spring框架中的依赖注入...

    学习Spring笔记_Annotation(注解)_Autowired_Qualifier

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

    spring框架的@Resource和@Component 程序和文档

    理解这两个注解的使用和区别是掌握Spring框架核心概念的关键。 首先,`@Component`是Spring框架中的一个元注解,它用于标记一个类为Spring管理的Bean。当你在类定义上添加`@Component`时,Spring会自动扫描到这个类...

    详解SpringBoot 多线程处理任务 无法@Autowired注入bean问题解决

    SpringBoot 多线程处理任务中无法@Autowired注入bean问题解决 在 SpringBoot 应用程序中,多线程处理任务是一个常见的场景,但是,在多线程处理任务中无法使用 @Autowired 注入 bean,这是一个常见的问题。今天,...

    Spring的Autowired自动装配(XML版本+Annotation版本+源码+解析)

    随着Java注解的普及,Spring引入了@Autowired注解,使得自动装配更为直观和简洁。例如: ```java @Service public class MyService { } @Component public class MyClient { @Autowired private MyService ...

    4Spring自动装配——annotation resource方式

    理解并熟练运用`@Autowired`和`@Resource`可以极大地提升Spring应用的可维护性和灵活性。在编写代码时,要根据需求选择合适的注解,并注意避免注入冲突。通过阅读和理解源码,我们可以更好地掌握Spring自动装配的...

    spring3注解详细

    @Resource 是 JSR-250 标准注解,推荐使用它来替代 Spring 专有的 @Autowired。@Resource 默认按照 Bean 的名字(byName)进行注入,而 @Autowired 默认按照类型(byType)进行注入。@Resource 的 name 和 type 属性可以...

    Autowired报错原因分析和4种解决方案.docx

    在日常的Java开发工作中,尤其是使用Spring框架时,我们经常会遇到@Autowired注解出现的编译警告或者错误。尽管这些错误往往不会影响程序的实际运行,但对于追求高质量代码的开发者而言,这仍然是一个不容忽视的问题...

    spring annotation注解

    Spring 框架提供了多种类型的注解,例如 @Autowired、@Resource、@Component 等。 1. 使用 Spring 注解来注入属性 在使用 Spring 框架之前,我们通常使用 setter 方法来注入属性,例如: Java 代码 ```java ...

    1+X考试真题-Java-中级-2021-11(1).docx

    @Autowired 来自 Spring 框架,而 @Resource 来自于 Java 的 JSR-250 规范。@Autowired 和 @Resource 都可以用来实现依赖注入,但它们的依赖查找顺序不同。@Autowired 先根据类型(byType)查找,如果存在多个(Bean...

    springmvc @Resource 注解方式问题

    理解`@Resource`注解的工作机制和与`@Autowired`的区别,有助于优化Spring容器的依赖注入,避免潜在的注入错误。在选择使用哪种注解时,开发者应根据项目需求和bean的命名规则来决定。同时,结合使用`@Qualifier`和`...

    Spring 中 @Service 和 @Resource 注解的区别

    关于@Autowired和@Resource的详细区别,可以通过相关的学习资源进行深入学习。 总的来说,@Service和@Resource在Spring框架中分别扮演了不同的角色:@Service用于标记业务层组件,声明bean;而@Resource则负责注入...

    spring-autowire.zip

    当在某个字段或方法上添加了@Autowired,Spring容器会自动寻找合适的bean进行注入,而无需手动使用`@Resource`或`@Inject`来指定bean的名称。 在IDEA 2020中创建Spring项目并引入Spring Web依赖,我们可以创建几个...

    自动装配 AutoWire

    虽然@Autowired和@Resource都可以实现依赖注入,但它们有一些区别: - **@Autowired** 默认按类型匹配,可以与JSR-250规范结合使用,支持注解的属性(如required,默认为true)。 - **@Resource** 按名称匹配,它是...

    Spring_Annotation_IOC代码

    两者的主要区别在于`@Autowired`默认按照类型匹配,而`@Resource`默认按照名称匹配。 ### 6. 配置类与`@Configuration` - **@Configuration**:这个注解用于标记一个类为配置类,可以替代XML配置,提供基于Java的...

Global site tag (gtag.js) - Google Analytics