2014-09-02 24 views
-1

我有是這樣的:春:覆蓋註解@Singleton定義

@Named 
@Singleton 
public class MyDefaultDef { 

    @Inject 
    public MyDefaultDef(SomeRef someRef, List<AnotherRef> anotherRefs) { 
    //... 
    } 
    //... 
} 

問:如何使MyDefaultDef繼承人將覆蓋MyDefaultDef定義是什麼?意味着@Autowired MyDefaultDef應該返回MyDefaultDefHeir

更新時間:(換句話說)

我需要SomeService注入MyDefaultDefHeir而不是MyDefaultDef

@Service 
public class SomeService { 

@Inject 
public SomeService(MyDefaultDef myDefaultDef) { 
    //... 
} 
} 

回答

1

我想你搜索是這樣的回答:

https://stackoverflow.com/a/25528379/869225

可以使用@Primary或有序列表來實現你想要的。

+0

的更新部分,這是行不通的。如果將'@ Primary'添加到'MyDefaultDefHeir'而不是'SomeService',則注入'MyDefaultDef'而不是'MyDefaultDefHeir'。也許我理解你錯了,你能提供一個例子嗎? – 2014-09-02 18:40:22

+0

服務+小學顯然有效。你確定兩個豆子都在春天嗎?如果您同時擁有並且沒有主Spring將無法使用DuplicateBeanException加載上下文。 – 2014-09-02 21:08:12

-1

你似乎使用JSR-330(@注入)的組合和泉自己註釋(@Autowired)在這裏。

如果你想使用@Autowired

@Autowired 
@Qualifier("myDefaultDefHeir") 

,或者如果你想使用@Inject

@Inject 
@Named("myDefaultDefHair") 

這是你在找什麼?

+0

感謝您的回答,但事情有點惡化。看看我的問題 – 2014-09-02 15:58:01