Spring注解@Resource和@Autowired区别
2021-02-20 18:19
标签:mic ram dict 优先 核心 service systemd resource ann @Autowired和@Resource作用基本相同,都是用于自动装配bean对象。都可以写在字段上,或写在setter方法上。 @Autowired(Spring注解,org.springframework.beans.factory.annotation.Autowired) @Resource(JAVA注解,javax.annotation.Resource)。适用范围广,依赖小。 @Resource 默认优先名称匹配, 具体装配策略如下: @Autowired 默认是按照类型来注入的,需要按名字注入的话可以跟@Qualifier搭配使用。 @Qualifier作用为限定描述符,用于细粒度选择候选者,说人话就是注入的时候可能发现有多个可注入对象,比如说一个Service接口有3个实现类,分别为impl1,impl2,impl3,你注入service的时候注入的是接口,那么就可以通过@Qualifier(“你要注入的bean的名称”)来选择注入对象。 @Autowired可以为null。可以设置它的required属性为false。 @Autowired(required=true):当使用@Autowired注解的时候,其实默认就是@Autowired(required=true),表示注入的时候,该bean必须存在,否则就会注入失败。 @Autowired(required=false):表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错。 场景:在容器的启动过程中,会初始化很多bean,这也是spring的核心之一(IOC)。但是在注入的过程中,扫描到公共方法中要注入的bean,并未找到,强行注入就会注入失败。我们又不能单独的去除改方法,所以我们采取的思想就是有bean就注入,没有就不注入。解 决办法就是@Autowired(required=false)。 @Resource还可以对类注解。 Spring注解@Resource和@Autowired区别 标签:mic ram dict 优先 核心 service systemd resource ann 原文地址:https://www.cnblogs.com/wmy666/p/12681310.html一、相同点:
二、不同点:
1.出处不同
2.自动装配策略不同
@Resource(name="systemDictService")
private SystemDictService systemDictService;
实现类1:
@Service("menuService1")
public class MenuServiceImpl implements IMenuService {
@Autowired
private MenuMapper mapper;
}
实现类2:
@Service("menuService2")
public class MenuServiceImpl implements IMenuService {
}
注入1:
@Autowired
@Qualifier("menuService1")
private IMenuService menuService;
注入2:
@Autowired
@Qualifier("menuService2")
private IMenuService menuService;
3.其他区别
下一篇:6-二维数组中的查找
文章标题:Spring注解@Resource和@Autowired区别
文章链接:http://soscw.com/index.php/essay/58093.html