2011-10-02 20 views
1

我有許多相同類型的類(com.project.abc.abs.Agent),如此註釋;通過某個組件將組件/類裝載到ArrayList中名稱模式

@Component("WEB.Agent-1"), @Component("WEB.Agent-2"), @Component("WEB.Agent-3") ...等現在假設所有的類都在同一個包中(com.project.abc.web.Agent1...)。

這些類都是單例,我想將它們動態加載到中央的「代理管理器」類中。即每次使用@Component("WEB.Agent-#")註釋添加新代理類別時,都會提取它,而無需更改代理管理器。在AgentManager類中,我需要一些方法來加載任何匹配名稱「WEB.Agent-#」(其中#是一個數字或一些唯一ID)的組件,這可能使用Spring中的任何方法嗎?

如果不是,我假設我需要去加載所有類從一個特定的文件夾/包?

回答

1

你可以用ClassPathScanningCandidateComponentProvider做到這一點,添加一個排除擺脫的東西,不符合你的模式過濾器:

+0

感謝馬克,它會出現'.getAnnotationAttributes()'需要一個String參數,應該是'.getAnnotationAttributes(「Component」)'? – NightWolf

+0

當運行通過for循環時,我得到錯誤'org.springframework.beans.factory.BeanDefinitionStoreException:無法讀取候選組件類:文件' – NightWolf

+0

@NowWolf,我想你需要指定'Component.class.getName()' (完全限定類型名稱)。 –

相關問題