私はクラス@Async
で注釈付けされたメソッドを持つ依存関係jarのクラスを持っていますが、このメソッドは別のスレッドで非同期に実行する必要があります。新しいスレッドを開始しないで、依存関係のjarの非同期注釈
このクラスを使用して、親プロジェクトにBeanを作成し、@Service
アノテーションを持つクラスに配線します。そのクラスでは、@Async
アノテーションを持つメソッドを呼び出しますが、私が言ったように、このメソッドは別のスレッドでは実行されません。
どうすればこの問題を解決できますか?
これはコードです。
これは私のインタフェースクラスである:
public interface RequestLoggerService {
@Async
void log(HttpServletRequest request, String serviceName, String requestIdentifier, String message, boolean successful);
}
これは、実装クラスである:
public class RequestLoggerServiceImpl implements RequestLoggerService {
private static Logger logger = Logger.getLogger(RequestLoggerServiceImpl.class);
private RequestLoggerDao requestLogger;
@Override
public void log(HttpServletRequest request, String serviceName, String requestIdentifier, String message, boolean successful) {
logRequest(request, serviceName, request.getRequestURI().substring(request.getRequestURI().lastIndexOf("/") + 1), requestIdentifier, message, successful);
}
}
これら二つのクラスは、私の親プロジェクトで使用される依存関係としてある瓶に詰められています。私は@BretC指示に従ったし、解決策を見つけた
public class ActionsController {
@Autowired
private RequestLoggerService requestLogger;
}
コードに問題があります。投稿する。 –
XML設定や '@ Configuration'/springブートを使用していますか?後者の場合は、@ EnableAsync'アノテーションを追加する必要があります。https://spring.io/guides/gs/async-method/ http://stackoverflow.com/questions/31401640/spring-xmlを参照してください。 -equivalent-of-enableasync for XML version – BretC
これはちょっと混じっていますが、@EnableAsyncアノテーションがあります。親プロジェクトで非同期メソッドを使用してクラスを作成すると、すべてが正常に機能します。私はそれを瓶に移して、その瓶の瓶から豆を初期化しますが、それはうまくいきません。 – dplesa