私は春が初めてで、オブジェクトをコントローラーに自動配線する方法を見つけようとしています。オブジェクトは、ServletContextListener を使用して開始および停止されるタスクから実行時に作成されます。このオブジェクトについてSpringアプリケーションコンテキストに伝えるにはどうすればよいですか?
詳細
私のバックグラウンド タスクは、以下のコードで開始されます。alertServer
オブジェクトをコントローラーに接続したいと思います。このクラスを変更してそれを行うことはできますか?
@WebListener
public class ExecutorContextListener implements ServletContextListener
{
private static Logger log = Logger.getLogger(ExecutorContextListener.class);
Thread backgroundThread;
AlertServer alertServer;
@Override
public void contextInitialized(ServletContextEvent event)
{
// Start the AlertServer
alertServer = new AlertServer();
backgroundThread = new Thread(alertServer, "AlertServer");
backgroundThread.start();
}
@Override
public void contextDestroyed(ServletContextEvent event)
{
alertServer.stop();
try
{
backgroundThread.join();
}
catch (InterruptedException e)
{
log.error("contextDestroyed Exception", e);
}
}
}
アップデート
提供されたコメントと回答は、解決策を見つけるのに非常に役立ちました。Sotirios Delimanolis と Dave Newton から提供された情報により、Spring の上にソリューションを構築しているので、そもそも ServletContextListener を使用する必要がないことに気付きました。私が実際にやりたかったことは、Spring コントローラーで使用できるバックグラウンド スレッドを開始することだけだったので、このコードを servlet-context.xml に入れ、稼働しています。
<beans:bean id="alertServer" class="com.springmvcproj.AlertServer">
<beans:property name="serverPort" value="56543" />
</beans:bean>
<beans:bean id="AlertServerThread" class="java.lang.Thread" init-method="start">
<beans:constructor-arg ref="alertServer"/>
</beans:bean>