[英]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);
DatabaseIdGenerator
是CacheEnabledDatabaseIdGenerator
的接口
執行代碼時出現以下異常
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.