2011-03-08 53 views
0

Spring支持使用註釋@Component自動檢測類,而<組件掃描>,但是,@Component不是@Inherited。如何自動檢測和連接從特定類型擴展的類?

我試圖創建一個自定義可繼承的註解:

@Component 
@Inherited 
@Retention(RUNTIME) 
public @interface MyInheritableComponent {} 

不幸的是,@MyInheritableComponent不起作用。

有什麼想法?

編輯

文件我/包/ Injectable.java:

@MyInheritableComponent 
public class Injectable {} 

文件我/包/ Foo.java:

public class Foo extends Injectable {} 

和組件掃描定義作爲:

<context:component-scan base-package="my.package" /> 

在上例中,Foo未被自動檢測到。

我的意圖是,隱藏來自某些特定類的@Component註釋。

+0

你爲什麼要這麼做?什麼是用例? – skaffman 2011-03-08 08:17:35

+0

你的Spring xml compnent-scan標籤的外觀如何? – Ralph 2011-03-08 10:06:12

回答

1

由於缺少@Inherited@Component<context:component-scan>默認過濾器不尊重@Inherited您的自定義註釋。

但是,如果添加了自定義過濾器爲您的註解,它會達到預期效果:

<context:component-scan base-package="my.package"> 
    <context:include-filter type = "annotation" expression = "MyInheritableComponent" /> 
</context:component-scan> 
+0

我已經更新了這個問題,你能再檢查一次嗎? – 2011-03-08 10:26:07

+0

@謝繼雷'Lenik:更新。 – axtavt 2011-03-08 11:03:43