Использование хамона на основе аннотаций весной?
Использовать jamon
в spring
Описано использовать JamonPerformanceMonitorInterceptor
и поставить его на пружины AOP-механизм через applicationContext.xml
, Это объясняется, и в его источниках есть пример в тестах. К сожалению, я хочу собрать приложение с весенней загрузкой без какой-либо xml-конфигурации.
Можно ли использовать некоторые аннотации для включения JamonPerformanceMonitorInterceptor
до весны?
2 ответа
Лучше поздно, чем никогда...
У меня была та же самая ситуация: мне нужно было настроить JAMon без какой-либо конфигурации XML. Большинство онлайн-примеров (включая комментарии в исходном коде JAMon) рекламируют гибкость конфигурации XML, но я не смог найти никаких примеров с конфигурацией на основе аннотаций. Конфигурации, основанные на аннотациях, также не обязательно должны быть менее гибкими, их просто нужно концептуально разделить и не путать с функциональными частями приложения. Я думаю, что такой советник может быть хорошим примером:
@Component
public class MonitoringAdvisor extends AbstractPointcutAdvisor {
private final StaticMethodMatcherPointcut pointcut = new StaticMethodMatcherPointcut() {
@Override
public boolean matches(Method method, Class<?> targetClass) {
return targetClass.isAnnotationPresent(RestController.class);
}
};
@Override
public Pointcut getPointcut() {
return this.pointcut;
}
@Override
public Advice getAdvice() {
return new JamonPerformanceMonitorInterceptor(true, true);
}
}
Этот советник сообщит Spring/AOP о запуске рекомендаций по мониторингу JAMon для любого метода bean-компонента Spring, помеченного как @RestContrller
, Этот советник должен быть настроен / добавлен в тот же контекст Spring, что и остальные контроллеры.
Обратите внимание, что в моем случае я специально хотел контролировать мои остальные контроллеры. Можно адаптировать советника в соответствии со своими потребностями. (В моем коде я использую более продвинутую / настраиваемую версию представленного советника)
Помогло ли это пример приложения Spring Boot?
Вот соответствующая часть руководства Spring AOP.