построил простую программу для весенних игр с некоторыми аспектами проверки архитектуры и так далее.AOP с Springboot, java.io.PrintStream
я пытаюсь поймать каждый вызов System.out.println(), чтобы дать предупреждение об использовании так это то, что я нашел до сих пор:
System.out.println() использует PrintStream так, что Я пробовал:
@Aspect
@Component
public class CleanCodeAspect {
@Before("call(void java.io.PrintStream.println(String))")
public void beforePrintlnCall() {
System.out.println("About to make call to print Hello World");
}
}
Но без успеха. Журнал говорит
The pointcutexpression call(void java.io.PrintStream.println(String)) contains unsupported pointcut primitive 'call'
Аналогичный аспект работает, но с выполнением вместо вызова:
@Aspect
@Component
public class BooleanServiceMonitor {
@Before("execution(* de.fhb..*Service.*(java.lang.Boolean))")
public void logServiceAccess() {
System.out.println("You used a method with only one boolean parameter. "
+ "Refactor it into 2 methods with True, False at the end.");
}
}
Весна использует прокси-серверы для применения АОП, весна может использовать только боты с пружинным основанием. Класс, реализующий «PrintStream», обычно не является компонентом, настроенным на пружину. Рядом с тем, что Spring AOP поддерживает только подмножество синтаксиса AspectJ (как указывает сообщение), он поддерживает 'execute' и специальные« point »кнопки bean. Если вы хотите больше, вам придется использовать fullblown aspectj с загрузкой или компиляцией времени. –
@ M.Deinum: Почему бы вам не преобразовать комментарий в ответ? Это правильно и заслуживает признания. ':-)' – kriegaex