Обновление 5: Я загрузил последнюю версию Spring ToolsSuite IDE, основанную на последней версии Eclipse. Когда я импортирую свой проект как проект Maven, Eclipse / STS использует цели Maven для создания моего проекта. Это означает, что AspectJ наконец-то правильно работает в Eclipse.
Обновление 4: Я только что использовал плагин Maven + AspectJ для создания компиляции во время компиляции, эффективно обходя механизм Eclipse.
Обновление 3: Кажется, плагин Epectipse от AspectJ нарушает способность Eclipse правильно публиковать в Tomcat. Только удалив возможность AspectJ в проекте, я могу заставить его снова правильно опубликовать. Очень раздражает.
Обновление 2: У меня это сейчас работает в Eclipse. Мне очень неудобно об этом говорить, но я понятия не имею, как я это получил, работая со сборками Eclipse или Maven. Похоже, это проблема компиляции, а не проблема времени выполнения.
Обновление 1: Кажется, я заставил это работать через сборки Maven, но я понятия не имею, как. Затмение все еще не работает. Единственное, что я изменил в pom.xml , - это добавление этих (незначительных?) Параметров конфигурации:
<source>1.6</source>
<complianceLevel>1.6</complianceLevel>
<verbose>true</verbose>
<showWeaveInfo>true</showWeaveInfo>
<outxml>true</outxml>
Я на самом деле беспокоюсь, что у меня есть повторение этой проблемы , где все работает противоречиво. Я буду обновлять этот вопрос по мере того, как узнаю больше.
Что касается Eclipse, я добился некоторого прогресса, взяв бинарные аспекты, которые я хочу сплести - в данном случае spring-aspect.jar - и скопировав их из моего пути к классам. Затем я добавляю этот теперь внешний jar в мой Aspect Path . После этого Eclipse правильно показывает мне маркеры AspectJ в моем коде. Раздражает, что я не могу просто оставить spring-aspect.jar в моем Java Build Path , который поддерживается Maven для меня через плагин Maven. Однако по какой-то причине плагин AspectJ не видит двоичные аспекты, если они явно не добавлены в Aspect Path .
Исходное сообщение: @Configurable - это аннотация Spring, позволяющая вставлять зависимости в объекты, созданные вне Spring (например, Hibernate или некоторым классом Factory).
Ранее я использовал эту аннотацию с ткачеством во время загрузки, и она в основном работала. Иногда я загружался, и ничего не вводили. Эта проблема породила этот вопрос StackOverflow . Было не так много ответов, но большинство предлагало вместо этого попробовать ткачество во время компиляции из-за большей надежности.
Я установил плагин AspectJ для Eclipse и Maven. Оба они производят то, что кажется правильно скомпилированными классами. Я открыл один из классов в текстовом редакторе перед компиляцией AspectJ и не нашел ссылок на AspectJ. Я открыл его после компиляции AspectJ, и сгенерированные версии Eclipse и Maven имеют ссылку на org.aspectj.weaver.MethodDeclarationLineNumber . Вот почему я предполагаю, что он правильно компилируется. Проблема в том, что после развертывания никакие зависимости не вводятся.
My Spring applicationContext.xml включает следующее:
<context:spring-configured />
<context:component-scan base-package="com.myapp" />
Нужно ли прежде всего, чтобы классы с пометкой @Configurable делали DI? Во время преобразования из ткачества во время загрузки в ткачество во время компиляции я удалил META-INF / aop.xml , из моего applicationContext.xml и ткач Springcat из моего context.xml .
Как я могу исследовать эту проблему дальше? Каковы возможные причины?