Say Service вызывает класс Dao, на котором должен применяться атрибут ведения журнала (аннотационный). Мне интересно, как применяются аспекты.Насколько весенние аспекты работают внутри?
В соответствии с моим пониманием во время внедрения DAO под объектом Service весна обнаруживает, что в DAO настроен какой-то аспект (в этом случае ведение журнала), поэтому он вводит прокси-объект вместо реального целевого объекта. Теперь, когда фактический вызов выполняется любым методом внутри DAO, прокси-сервер применяет аспекты, а затем вызывает фактический объект цели . Это верно ? Кроме того, я считаю, что это называется Run time weaving.
С другой стороны, то же самое можно сделать с использованием ткачества времени загрузки (с конфигурацией javaagent), где обработка байтового кода выполняется для классов, по которым необходимо применять аспекты. Таким образом, прокси не фигурирует здесь.
Пожалуйста, исправьте меня, если я ошибаюсь, поскольку это основа для всех модулей пружин?
Я считаю, что время переплета времени лучше с точки зрения производительности, так как при определении того, следует ли вводить прокси-сервер, на основе конфигурации аспекта, которая будет иметь место для плетения времени выполнения, не будет. Да, в загрузке времени для запуска процесса ткацкого старта потребуется бит дольше, но это нормально, поскольку его однократная активность –
. Производительность может быть лучше в процессе загрузки времени (или, более конкретно, для компиляции времени). Лучше всего было бы проверить это на самом деле с помощью теста нагрузки) но есть и другие области, которые вы, возможно, захотите рассмотреть, как изменения в системе сборки.Вы бы включили этот шаг до создания ваших артефактов. –
Просто полезная цитата - «* Все проблемы в информатике могут быть решены другим уровнем косвенности, за исключением, конечно, проблемы слишком большого числа направлений. *» - Дэвид Уилер – smwikipedia