Tengo una clase abstracta con el método abstracto
@Asynchronous
public abstract void runAsync();
He encontrado esta respuesta para @Async
la primavera asíncrono que no trabaja en el método de superclase abstracta del controlador
Pregunta es, este método runAsync
sea asíncrona Si anularlo en la ejecución? ¿O tengo que hacer @Asynchronous
la anotación sólo en la implementación?
Las anotaciones se no se heredan de forma predeterminada . Anotaciones será heredado sólo si tiene @Inherited
propiedades en la definición de anotación. Ahora mira la @Async
definición anotación:
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Async
Async
anotación no tiene las propiedades @Inherited
, por lo que no será heredado de subclase. En ese caso, es necesario especificar explícitamente el @Async
en el método de reemplazo subclase para que funcione. Para obtener más información, visite el enlace .
EDIT: javax.ejb.Asynchronous
También no tiene @Inherited
propiedad ( docs )
@Target(value={METHOD,TYPE})
@Retention(value=RUNTIME)
public @interface Asynchronous
Por lo tanto, en el caso de @Asynchronous
, el comportamiento en caso de anulación método con @Asynchronous
será el mismo que se mencionó anteriormente.