簡體   English   中英

在Spring MVC中多次實例化Singleton bean?

[英]Singleton bean instantiated multiple times in Spring MVC?

有誰知道為什么這個bean被多次實例化? 我只想要它的一個實例,但是每次控制器運行構造函數時,都會再次調用它。

這是我的applicationContext.xml中的定義

<bean id="DiameterClient" class="com.rory.diameter.client.DiameterClient" scope="singleton" init-method="start">
    <constructor-arg type="java.lang.String" index="0"><value>${pcca.host}</value></constructor-arg>      
    <constructor-arg index="1"><value>${pcca.port}</value></constructor-arg>      
    <constructor-arg index="2" value="com.openwave.djgx.message"/>
    <constructor-arg index="3" value="com.openwave.djgx.avp"/>    
</bean>

在我的控制器中,這里是我使用它的地方-雖然我只會得到DiameterClient類的一個實例,但是每次下面的代碼運行時它都會調用其構造函數-非常感謝您的幫助:

BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
DiameterClient diameterClient = (DiameterClient)factory.getBean("DiameterClient");
diameterClient.send(aar);

注意,DiameterClient不是我的課程,我不想編輯它,只希望每個應用程序有一個全局實例。 另請注意,DiameterClient擴展了Thread-不確定是否重要。

每次創建一個新上下文時,作用域singleton意味着上下文中存在一個實例。 通常,每個應用程序執行需要一個上下文。 將下面的部分移動到應用程序中一次執行的位置:

BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM