1

我relativly新EE/CDI爲DI所以也許你們中的一個可以爲我提供一些提示我的問題:DI與CDI和第三方類:避免構造經商邏輯多次調用每個代理建設

我有第三方課,我想注入其他豆類。在春天只需要一些<bean>聲明,它完成了。使用CDI現在需要一個工廠類:

public class XProducer {  
    @Produces 
    @ApplicationScoped 
    public X createX(){ 
     return new X(); 
    } 
} 

不幸的是X`s構造函數調用相當昂貴的商業邏輯,每一個代理通過CDI創建這就是所謂的,但我不能改變X的行爲時。這給我留下了以下選項,我真的不喜歡:

  • 包裝X中的一些醜陋的Holder -class,
  • 創造一些門面和有delgate方法X

是否有任何其他選擇離開?

回答

2

這可能是您想要使用@javax.inject.Singleton作爲第三方的情況,您不需要攔截器支持,單例不會生成代理,因此構造函數只會被調用一次。

+0

好的,使用EJB然後:)我最初拒絕'@ Singleton'由於容器管理的併發造成瓶頸具有忽略它可以用'@ConcurrencyManagement(BEAN)'被禁用。 –

+0

爲什麼EJB?如果你使用'@ javax.inject.Singleton'其從JSR-330,而不是EJB。 –