Весенний аспект конвертера

Я создал простую Aspect аннотацию для измерения времени выполнения аннотированного метода. Когда я аннотирую метод простого Spring Bean, внедряю bean и запускаю его как bean.annotatedMethod(), все работает нормально.

Однако, когда я аннотирую метод convert() в Spring Converter, аннотации игнорируются. Я предполагаю, что причина в том, что convert() вызывается изнутри Spring ConversionService, и почему-то Аспекты не соблюдаются. Есть ли способ заставить его работать?


Аннотация:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface LogExecTime {

}

Аспект, который я регистрирую весной:

@Aspect
@Component
public class LogTimeAspect {

    @Around(value = "@annotation(annotation)")
    public Object LogExecutionTime(final ProceedingJoinPoint joinPoint, final LogExecTime annotation) throws Throwable {
        final long startMillis = System.currentTimeMillis();
        try {
            System.out.println("Starting timed operation");
            final Object retVal = joinPoint.proceed();
            return retVal;
        } finally {
            final long duration = System.currentTimeMillis() - startMillis;
            System.out.println("Call to " + joinPoint.getSignature() + " took " + duration + " ms");
        }

    }
}

Это отлично работает:

@Component
public class Operator {

    @LogExecTime
    public void operate() throws InterruptedException {
        System.out.println("Performing operation");
        Thread.sleep(1000);
    }
}



@Bean
protected Void test(Operator o) {
    o.operate();

    return null;
}

Но здесь аннотация игнорируется:

public class SampleConverter implements Converter<SourceType, ResultType> {
    @Override
    @LogExecTime
    public ImmutableData convert(@Nonnull ClassifiedEvent result) {
       ...
    }
}



ConversionService conversionService;
...
conversionService.convert(source, ResultType.class));

SampleConverter - это управляемый компонент Spring?

Essex Boy 16.03.2018 11:28

@EssexBoy Действительно, я пропустил это, я создавал экземпляр своего конвертера вручную. Это решило проблему, спасибо!

user2203031 16.03.2018 11:56
1
2
53
1

Ответы 1

Решено с помощью комментария @EssexBoy, мой конвертер не был компонентом с управляемым Spring.

Другие вопросы по теме