找不到在Spring xml中实例化@Resource对象的位置

时间:2017-03-18 15:26:58

标签: java xml spring spring-mvc controller

我正在尝试找出实例化java对象的位置。我有一个Spring控制器,在控制器中是一个dataService字段:

@SuppressWarnings("restriction")
@Controller
public class DataController {

   /**
    * Service for which to delegate retrieval of data
    */
    @Resource
    private DataService dataService;

DataService是一个接口。实现此服务的类是DataServiceImpl)。

根据我的理解,当字段上方有@Resource时,它表示该对象是使用通常在xml文件中定义的spring bean实例化的。但是,我在我的工作区搜索了这个对象的名称(以及许多变种),并查看了项目中所有常见的spring bean位置,但我无法在任何地方找到任何提及。有谁知道这里会发生什么?

1 个答案:

答案 0 :(得分:1)

从spring框架文档中,

  

@Resource采用name属性,默认情况下Spring解释   该值作为要注入的bean名称。如果未明确指定名称,则默认名称是从字段名称或setter方法派生的。如果是字段,则采用字段名称;在setter方法的情况下,它采用bean属性名称

如果没有提供name属性,那么spring会回退到autowiring,它将搜索并注入匹配类型的bean。因此DataServiceImpl可以在spring bean xml文件中定义或使用@Component注释。

  

在@Resource用法的唯一情况下,没有明确的名称   指定,与@Autowired类似,@ Resource搜索主要类型   匹配而不是特定的命名bean并解析众所周知   可解析的依赖关系。

More on @Resource.