@Autowired @Resource区别

@Autowired:

1、可用于:域(Filed)或者说属性(Property)、构造方法定义(Constructor)、方法定义(Method)上。

2、在实例化bean定义的过程中,通过AutowiredAnnotationBeanPostProcessor来检查当前对象是否有@Autowired标注的依赖需要注入(或者)。

3、按照类型进行匹配。

4、配合@Qualifier实现类型+名称匹配(使用场景:当前@Autowired标注的依赖在容器中只能找到一个实例与之对应的话,可以。可是,要是能够同时找到两个或者多个同一类型的对象实例,IoC容器并不知道应该把具体哪个实例注入给当前对象,例子如下:假设FXNewsProvider使用的IFXNewsListener有两个实现,一个是DowJonesNewsListener,一个是ReutersNewsListener,二者相关配置如下:)

5、由Spring提供

@Autowired @Resource区别_第1张图片


@Autowired @Resource区别_第2张图片


@Resource

1、可用于:域(Filed)或者说属性(Property)、构造方法定义(Constructor)、方法定义(Method)上。

2、在实例化bean定义的过程中,通过CommonAnnotationBeanPostProcessor来检查当前对象是否有用@Resource、@PostConstruct、@PreDestroy标注的依赖需要注入(或者)。

3、按照名称进行匹配(IoC容器将根据@Resource所指定的名称,到容器中查找beanName与之对应的实例,然后将查找到的对象实例注入给@Resource所标注的对象),如果名称找不到,再按照类型匹配。

4、JSR250提供。

你可能感兴趣的:(@Autowired @Resource区别)