SpringBoot(十六)@Autowired、@Inject、@Resource

@Resource,@Autowired,@Inject 这3种都是用来注入bean的,它们属于不同的程序中。详情参见下表:

v区别

ANNOTATIONPACKAGESOURCE作用域实现方式其它
@AutoWiredorg.springframework.bean.factory,Spring自带的方式Spring 2.5+可以用在构造器、方法、属性、参数、注解上面通过AutowireAnnotationBeanPostProcessor类实现依赖注入注入可以根据名字/类型,可以设置required属性为false指定找不到相应bean时不抛异常
@Resourcejavax.annotation,是JSR-250标准,JDK6以上自带,Spring版本要求2.5以上Java JSR-250可以用在方法、属性、类上通过CommonAnnotationBeanPostProcessor类实现依赖注入与@AutoWired一致。但可以指定name属性来指定beanName,但如果name对应的bean不存在,则会抛出异常,且没有required属性
@Injectjavax.inject,是JSR-303标准,Spring版本3以上。需要导入外部依赖Java JSR-330可以用在方法、属性、构造器上通过AutowiredAnnotationBeanPostProcessor类实现依赖注入与@AutoWired一致,区别在于@Inject没有required属性

v实现方式

2.1 @Inject

如下是@Inject的使用,不加@Named注解,需要配置与变量名一致即可。

    @Inject
    @Named("mongo")
    private Mongo mongo;

2.2 @Autowired

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

    @Autowired
    private MongoTemplate mongoTemplate;

2.3 @Resource

@Resource一般会指定一个name属性,如下

    @Resource(name = "testMapper")
    private TestMapper testMapper;


作  者:请叫我头头哥
出  处:http://www.cnblogs.com/toutou/
关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值