2016-08-04 2 views
0

У нас есть код, аннотированный с помощью Spring @async annotation - который предназначен для запуска метода в новой теме. Теоретически - этот метод должен запускаться при запуске.Каковы причины того, что аннотация Spring @async, возможно, не сработала?

На практике - он не работает вообще.

package ... 
... 
import org.springframework.scheduling.annotation.Async; 
... 
@Component 
public class MyClass { 
... 
    @Async 
    public void mymethod() { 
    ... 
    } 
} 

Я стараюсь думать о всех возможных причин, это может быть:

  • класс не в Спринг компонент пути сканирования (не в данном случае - проверяемых)

Мои вопрос: Каковы причины того, что аннотация Spring @async, возможно, не удалось запустить?

(Есть класс, я могу войти в случае асинхр выполнений было предпринята попыткой так и не удались?)

+1

И зачем должен запускаться '@ ASync' при запуске. В этом нет ничего очевидного. Также, когда что-то должно запускаться при запуске, обычно использование метода init - неправильный подход. Зачем? Поскольку AOP, возможно, еще не был применен, чтобы вещи, подобные '@ Async' или' @ Transactional', были бесполезны. –

ответ

3

Это ситуация, когда @Async не работает для меня

  1. @EnableAsync пропускало
  2. @Async метод не был открыт
  3. @Async аннотированный метод был вызван из другого метода того же класса. Возможно, в обход прокси-кода asyncи просто вызов простого метода.
Смежные вопросы