簡體   English   中英

無法通過 class 找到 bean

[英]Unable to find bean by class

我在 applicationContext.xml 中定義了一個實現 class 的 bean,如下所示:

     <bean id="com.pcmsgroup.v21.databaseId.IDatabaseIDGenerator" 
          class="com.pcmsgroup.v21.infrastructure.databaseid.CacheEnabledDatabaseIdGenerator">
          <constructor-arg ref="dbIdGen" />
     </bean>

我正在嘗試從 class 獲取它,如下所示:

final DatabaseIdGenerator databaseGenerator = (DatabaseIdGenerator) 
ObjectFactory.getInstance().getInstance(DatabaseIdGenerator.class);

DatabaseIdGeneratorCacheEnabledDatabaseIdGenerator的接口

執行代碼時出現以下異常

org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No bean named 'com.pcmsgroup.v21.infrastructure.databaseid.DatabaseIdGenerator' is defined

當我嘗試按名稱查找 bean 時,它工作正常:

final DatabaseIdGenerator databaseGenerator = (DatabaseIdGenerator) 
ObjectFactory.getInstance().getInstance("com.pcmsgroup.v21.databaseId.IDatabaseIDGenerator");

我想通過.class 獲取bean,因為獲取代碼在另一個存儲庫中,我不想更改該代碼。 有任何想法嗎?

我可以通過將 bean id 更改為:

id="com.pcmsgroup.v21.infrastructure.databaseid.DatabaseIdGenerator"

問題是 bean 是通過它的名稱獲取的,它正在將接口的 package 名稱分配給CacheEnabledDatabaseIdGenerator的 bean 的 id

我通過調試以下方法發現了這一點: org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition

暫無
暫無

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

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