@Service
public class LogProcessorServiceImpl {
@Autowired
private static ApplicationConfigurationService applicationConfigurationService;
public static void processPageRequestsLogs() {
if(applicationConfigurationService==null) {
System.out.println("autowire failed");
}
私は ApplicationConfigurationService サービスをこのようにどこでも自動配線しており、正常に動作します。このクラスのパッケージはスキャンされているため、問題はありません。この特定のメソッドが呼び出される方法に関連している可能性があります。他のすべてのサーブレットの後にロードされるサーブレットがあり、上記のメソッドを 60 秒の遅延で実行するタイマーを起動します。すべての自動配線が完了する必要があると思います。
public class ProcessSchedulerServlet implements javax.servlet.Servlet {
Timer timer=new Timer();
@Override
public void init(ServletConfig arg0) throws ServletException {
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
LogProcessorServiceImpl.processPageRequestsLogs();
}
}, 60*1000, 120*1000);
}
ApplicationConfigurationService を使用するとすぐに、次のことが起こります。
autowire failed
Exception in thread "Timer-1" java.lang.NullPointerException
at com.siteadmin.services.impl.LogProcessorServiceImpl.processPageRequestsLogs(LogProcessorServiceImpl.java:39)
at com.siteadmin.servlets.ProcessSchedulerServlet$1.run(ProcessSchedulerServlet.java:20)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
=== 2012-11-18 ========================================= ==================