java - @Resource作用

查看:732
本文介绍了java - @Resource作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

@Resource
public interface MyObjectMapperExt extends MyObjectMapper {

 // TODO 
}

为什么在这个地方不加@Resource的时候,在另外一个地方注入MyObjectMapperExt会失败?

@Autowired
private MyObjectMapperExt myObjectMapperExt;

会注入失败,提示无法注入。是什么原因?而且@Resource是mybatis自动生成的。

解决方案

/**
 * The Resource annotation marks a resource that is needed
 * by the application.  This annotation may be applied to an
 * application component class, or to fields or methods of the
 * component class.  When the annotation is applied to a
 * field or method, the container will inject an instance
 * of the requested resource into the application component
 * when the component is initialized.  If the annotation is
 * applied to the component class, the annotation declares a
 * resource that the application will look up at runtime. <p>
 *
 * Even though this annotation is not marked Inherited, deployment
 * tools are required to examine all superclasses of any component
 * class to discover all uses of this annotation in all superclasses.
 * All such annotation instances specify resources that are needed
 * by the application component.  Note that this annotation may
 * appear on private fields and methods of superclasses; the container
 * is required to perform injection in these cases as well.
 *
 * @since Common Annotations 1.0
 */
@Target({TYPE, FIELD, METHOD})
@Retention(RUNTIME)

这是@Resource注解的介绍,@Resource用在字段或者方法上的时候,Spring会从容器里面寻找需要的类型Bean,@Resource用在类上的时候,Spring会把当前类作为资源放入Spring容器。

@Autowired注解表示让Spring容器自动注入这个bean,@Resource表示把当前注解的类交给Spring容器管理,你不使用@Resource注解,Spring容器就不会加载这个类型的bean,需要注入的时候自然就报错了

你把@Resource用在interface上面也是有问题的吧 应该放在实现类上面

这篇关于java - @Resource作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆