@Autowired @Resource @Inject 自动注入

一、@AutoWired ( spring 的注解 )自动注入

/**
 * @Autowired:
 *         默认按照 Student 类型去容器中找对应的组件:applicationContext.getBean(Student.class);
 *         如果找到多个相同类型的组件,再将 student 这个属性名作为 id 去容器中找对应组件 applicationContext.getBean("student");
 *         required = false,容器中如果没有该组件,就为 null
 * @Qualifier:
 *         指定需要装配的组件 id,而不是使用 student 这个属性名作为 id
 */
@Qualifier("student2")
@Autowired(required = false)
private Student student;

二、@Resource ( JSR250 规范的注解 )

/**
 * @Resource:
 *         默认按照组件名 student 作为 id 去容器中找对应的属性
 *         使用 name = "student2" 指定 id *     没有 required = false 功能  
 */
@Resource(name = "student2")
private Student student;

三、@Inject ( JSR330 规范 ) 和 @AutoWired 功能一样。但是没有 required = false  功能

  导入 jar

<!-- https://mvnrepository.com/artifact/javax.inject/javax.inject -->
<dependency>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
    <version>1</version>
</dependency>
@Inject
private Student student;

原文地址:https://www.cnblogs.com/fangwu/p/8685906.html

时间: 2024-10-11 04:21:28

@Autowired @Resource @Inject 自动注入的相关文章

@Autowired @Resource @Qualifier的区别

参考博文: http://www.cnblogs.com/happyyang/articles/3553687.html http://blog.csdn.net/revent/article/details/49203619 http://blog.csdn.net/ad921012/article/details/49679745 spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@

Spring自动注入有关的注解

Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. 1,@Component 构件 与 @Repostiry @Control @Service @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了.@Resource有两个属性是比较重要的,分是name和type

Spring @Resource, @Autowired and @Inject 注入

Overview I’ve been asked several times to explain the difference between injecting Spring beans with ‘@Resource’, ‘@Autowired’, and ‘@Inject’. While I received a few opinions from colleagues and read a couple of posts on this topic I didn’t feel like

spring下应用@Resource, @Autowired 和 @Inject注解进行依赖注入的差

代码: 为了探寻  '@Resource', '@Autowired', 和'@Inject'如何解决依赖注入中的问题,我创建了一个"Party"接口,和它的两个实现类"Person","Organization".这样我就可以在注入Bean的时候不必使用具体类型(指使用接口类型即可).这样做也方便我研究当一个接口有多个实现类与之匹配的时候Spring是如何解决依赖注入的不确定性的. public interface Party {} packa

Injection of autowired dependencies failed; autowire 自动注入失败,测试类已初始化过了Spring容器。

1 严重: StandardWrapper.Throwable 2 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'searchController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreatio

Spring @Resource,@Autowired,@Qualifier的注解注入和区别

spring2.5提供了基于注解(Annotation-based)的配置,我们可以通过注解的方式来完成注入依赖.在Java代码中可以使用 @Resource或者@Autowired注解方式来经行注入.虽然@Resource和@Autowired都可以来完成注入依赖,但它们之间是有区 别的.首先来看一下: @Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入: @Autowired默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qu

Spring 注解Autowired自动注入bean异常解决

错误: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'xx' is defined 错误的一般解决办法: 1.看xxbean是否已经注入,或者得到的bean名字错误. 2.看spring的配置文件<context:component-scan base-package="com.xx"></context:component-scan>是否扫描了 c

spring自动注入的三种方式

所谓spring自动注入,是指容器中的一个组件中需要用到另一个组件(例如聚合关系)时,依靠spring容器创建对象,而不是手动创建,主要有三种方式: 1. @Autowired注解——由spring提供 2. @Resource注解——由JSR-250提供 3. @Inject注解——由JSR-330提供 @Autowired注解的使用方法 @Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, E

Spring 注解原理(二)AutowiredAnnotationBeanPostProcessor:@Autowired @Value @Inject @Lookup

目录 Spring 注解原理(二)AutowiredAnnotationBeanPostProcessor:@Autowired @Value @Inject @Lookup 1. 工作原理 2. determineCandidateConstructors 3. postProcessMergedBeanDefinition 3.1 buildAutowiringMetadata 4. postProcessPropertyValues 5. AutowiredFieldElement 6.