Ror*_*ory 0 java singleton spring web.xml 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>
Run Code Online (Sandbox Code Playgroud)
在我的控制器中这里是我正在使用它 - 我虽然这只会获得DiameterClient类的一个实例,但每次下面的代码运行时它都会调用它的构造函数 - 任何帮助都非常感激:
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
DiameterClient diameterClient = (DiameterClient)factory.getBean("DiameterClient");
diameterClient.send(aar);
Run Code Online (Sandbox Code Playgroud)
注意,DiameterClient不是我的类,我不想编辑它,只想每个应用程序有一个全局实例.另请注意,DiameterClient扩展了Thread - 不确定这是否重要.
您每次创建一个新上下文,范围singleton
意味着上下文中有一个实例.通常每个应用程序执行需要一个上下文.将下面的部分移动到应用程序中执行一次的位置:
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1408 次 |
最近记录: |