Spring AOP: <context: load-time-weaver> Vs <aop: aspectj-autoproxy>

Я искал вариант для профилирования моих API. Я обнаружил, что Spring AOP является одним из вариантов профилирования методов.

В Spring AOP есть две опции для настройки и использования аспектов:

  1. Контекст: время загрузки-ткач
  2. АОП: AspectJ-autoproxy

Согласно моему пониманию первый вариант (load-time-weaver) выполняет ткачество во время загрузки без создания каких-либо прокси-объектов. И второй вариант (aspectj-autoproxy) создает объекты прокси. Я прав в этом? Я считаю, что создание прокси-объектов может повлиять на производительность. не так ли?

Какой вариант лучше выбрать, учитывая лучшую производительность? Каковы плюсы и минусы обоих подходов?

1 ответ

Ну, Нарендра, прежде всего, есть профилировщики для профилирования программного обеспечения. Может быть, не нужно ничего кодировать самостоятельно.

Что касается вашего вопроса: я понятия не имею, как настроить Spring, потому что я никогда не использую его. Я пользователь AspectJ. Однако я знаю, что Spring AOP всегда использует прокси (JDK или CGLIB, в зависимости от того, нужен ли вам интерфейс или классы прокси). Это, как вы сказали, то, что вы, вероятно, не хотите для профилирования. AspectJ, независимо от того, используете ли вы компиляцию или время загрузки, не требует или использует прокси и, следовательно, должен быть быстрее. Если вы все еще не используете Spring в своем проекте, я бы не стал его трогать, чтобы удовлетворить ваши потребности в профилировании. Более того, Spring AOP работает только для Spring Beans и предлагает только перехват методов, не намного. AspectJ является полноценной AOP-реализацией и гораздо более мощной. Если вы уже используете Spring, у вас есть выбор использования Spring AOP, AspectJ в Spring или их комбинации.

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