Плетение времени загрузки AspectJ не работает для бобов Spring

Я сталкиваюсь с той же проблемой, что и:

Плетение времени загрузки AspectJ не работает с компонентами Spring

Решение возврата «Объекта» работает, но я не знаю причины.

Я прошел:

http://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch08s08.html#aop-aj-ltw

но до сих пор без понятия.


person Azazle    schedule 03.05.2014    source источник
comment
Пожалуйста, опубликуйте реальный код/конфигурацию, чтобы помочь вам. См. stackoverflow.com/help/how-to-ask, чтобы узнать, как задавать вопросы.   -  person M. Deinum    schedule 03.05.2014
comment
думал, что добавление того же контента ничего не добавит. И не знаю, как люди могут ответить на более старый (ваш) вопрос   -  person Azazle    schedule 03.05.2014


Ответы (1)


Как я прокомментировал эту другую тему.

Ткач во время загрузки, как следует из названия, будет работать только с загрузкой классов. Теперь, когда класс уже загружен, его больше нельзя обрабатывать.

Когда тип возвращаемого значения является конкретным классом, это приведет к жадной загрузке этого класса, он будет загружен до того, как ткач времени загрузки будет зарегистрирован и сможет делать это.

Когда возвращаемый тип равен Object, загрузка класса откладывается до тех пор, пока класс действительно не понадобится, и, как правило, это происходит после того, как ткач времени загрузки будет зарегистрирован, чтобы он мог выполнять свою работу.

Вы можете просто проверить это поведение, добавив -verbose:class в качестве параметров при запуске программы (как если бы вы добавляли свойства). Затем вы получаете обширный список классов, когда они загружаются.

person M. Deinum    schedule 03.05.2014
comment
понятно. Так почему бы не использовать lazy-init=true? - person Azazle; 03.05.2014
comment
Так как я использую аспект для профилирования. Разве мы не можем использовать плетение во время компиляции? Не знаю, будет ли это работать для частных методов или нет. - person Azazle; 03.05.2014
comment
@M.Deinum: у меня мало знаний о spring, но возвращает ли «Object» единственный способ решить эту проблему? - person SIGSTP; 03.05.2014
comment
@SIGSTP не имеет ничего общего с Spring, а имеет отношение к правилам загрузки классов JVM. - person M. Deinum; 04.05.2014
comment
@Azazle, вы всегда можете использовать плетение во время компиляции. - person M. Deinum; 04.05.2014