@Resource和@Autowire和@Inject的区别

一、@Autowired

1、@Autowired是spring自带的注解,通过后置处理器‘AutowiredAnnotationBeanPostProcessor’ 类实现的依赖注入;

2、@Autowired是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier,同时可结合@Primary注解;

3、@Autowired可以作用在变量、setter方法、构造函数以及参数列表上。

4、@Autowired有个属性为required默认为true,可以配置为false,如果配置为false之后,当没有找到相应bean的时候,系统不会抛错;

二、@Inject

1、@Inject是JSR330 (Dependency Injection for Java)中的规范,需要导入javax.inject.Inject;实现注入。

2、@Inject是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Named;

3、@Inject可以作用在变量、setter方法、构造函数上。

4、@Inject没有找到相应bean的时候,系统会抛错;

三、@Resource

1、@Resource是JSR250规范的实现,需要导入javax.annotation实现注入。

2、@Resource是根据名称进行自动装配的,一般会指定一个name属性

3、@Resource可以作用在类、变量、setter方法上。

4、@Resource没有找到相应bean的时候,系统会抛错;

猜你喜欢

转载自blog.csdn.net/qq_29026539/article/details/89204615
今日推荐