Я хотел бы добавить трекер активности пользователя для моего проекта.
Проект использует Spring с JSF в качестве представления. Есть идеи, как добавить пружинный AOP в боб JSF?
У меня есть приложение на основе Spring, и в настоящее время я пишу пользовательскую аннотацию для отслеживания действий пользователя, включая время. Я начал с пользовательской аннотации @Timed для отслеживания времени выполнения метода. Ниже приведен фрагмент кода:
Пользовательская аннотация
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LogExecutionTime {
}
LoggingAspect
@Aspect
@Component
public class LoggingAspect {
@Around("@annotation(LogExecutionTime)")
public Object logExcecutionTime(ProceedingJoinPoint joinPoint) throws Throwable{
Object value=null;
long currentTimeInMillisec=Instant.now().toEpochMilli();
value=joinPoint.proceed();
Long executionTime=(Instant.now().toEpochMilli())-currentTimeInMillisec;
System.out.println(joinPoint.getSignature() + " executed in " + executionTime + "ms");
return value;
}
Тест основного класса
@Component
public class TestRunAnnotation {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"file:WebContent/WEB-INF/spring-aspect-config.xml");
test();
}
@LogExecutionTime
private static void test() {
for (int i=0;i<5;i++) {
i++;
System.out.println("print value of i"+i);
}
}
}
В xml config
<context:component-scan base-package="...">
</context:component-scan>
<!-- Enable @AspectJ annotation support -->
<aop:aspectj-autoproxy />
<!-- Logging Aspect -->
<bean id="loggingAspect" class="......LoggingAspect" />
<bean id="testRunAnnotation" class="....TestRunAnnotation" />
<aop:aspectj-autoproxy proxy-target-class="true"/>
<tx:annotation-driven/>
</beans>
Во время работы основного метода я не получаю никакого сообщения от перехватчика регистрации, чтобы отслеживать время выполнения.