Пользовательская аннотация поверх Spring CrudRepository - PullRequest
0 голосов
/ 02 ноября 2018

Я создал пользовательскую аннотацию для целей статистики, но она не запускается при использовании с CrudRepository следующим образом.

У вас есть совет, как это сделать?

@Repository
public interface UserEntryForAuthRepository extends CrudRepository <UserEntryForAuth, String> {

   @Stat(endpoint = EndPoints.ORACLE, method = "get_password")
   @Transactional
   UserEntryForAuth findByUsername(String username);
}


@Retention(RetentionPolicy.RUNTIME)
public @interface Stat {
   EndPoints endpoint();
   String method();
}


@Around(value = "@annotation(stat)")
   public Object Stat(final ProceedingJoinPoint joinPoint, final Stat stat) throws Throwable {
      //String methodName = joinPoint.getSignature().getName();
      StopWatch stopWatch = new StopWatch();
      try {
         stopWatch.start();
         // invoke method
         Object returnValue = joinPoint.proceed();
         metricObserver.increment(CounterMetric.ACTION_COUNTER,stat.method(),"success");
         return returnValue;
      }
      catch (Exception e) {
         metricObserver.increment(CounterMetric.ACTION_COUNTER,stat.method(),"fail");
         throw e;
      }finally {
         stopWatch.stop();
         //LOGGER.debug("Name: {}, method: {}, elapased:{}",stat.endpoint().name(),stat.method(),stopWatch.getTotalTimeMillis() );
         metricObserver.observe(SummaryMetric.RESPONSE_TIME, stopWatch.getTotalTimeMillis(), stat.endpoint().name(), stat.method());
      }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...