簡體   English   中英

在Spring xml中找不到@Resource對象的實例化位置

[英]Can't find where @Resource object is instantiated in Spring xml

我試圖找出正在實例化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位置,但是在任何地方都找不到任何提及。 有人知道這里會發生什么嗎?

從Spring框架文檔中,

@Resource具有名稱屬性,默認情況下,Spring將該值解釋為要注入的Bean名稱。 如果未明確指定名稱,則默認名稱是從字段名稱或setter方法派生的。 如果是字段,則以字段名稱為准; 如果使用setter方法,則使用bean屬性名稱

如果沒有提供name屬性,那么spring將退回到自動裝配,它將搜索並注入匹配類型的bean。因此DataServiceImpl可以在spring bean xml文件中定義或使用@Component注釋。

在沒有指定顯式名稱且與@Autowired類似的情況下,@ Resource使用的特殊情況是,@ Resource查找主類型匹配而不是特定的命名bean,並解析眾所周知的可解決依賴項。

有關@Resource的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM