Ответ 1
Фактически по умолчанию Spring не работает
выполнять любую постобработку по байткоду
ни для XML-, ни для
построенный с аннотацией beans. Вместо
релевантные beans завернуты в динамические
прокси (см.
java.lang.reflect.Proxy
в
Java SDK). Динамические прокси-серверы
фактические объекты, которые вы используете и перехватываете
вызовы методов, позволяющие применять АОП
советы. Разница заключается в том, что прокси-серверы представляют собой, по существу, новые искусственные классы, созданные каркасом, тогда как постобработка ткачества/байткода изменяет существующие. Последнее невозможно без использования API-интерфейса Instrumentation, о котором вы говорили.
Что касается аннотаций, реализация тега <context:component-scan>
сканирует путь к классам для всех классов с помощью аннотаций Spring и создает для них теги метаданных Spring. После этого они обрабатываются так, как если бы они были настроены с помощью XML (или, более конкретно, оба они обрабатываются одинаково).
Хотя Spring не выполняет постобработку по байт-коду, вы можете настроить агент ткачества AspectJ, который должен отлично работать с Spring, если прокси не удовлетворяют вас.