[英]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.