Aggiornamento 5: Ho scaricato l'ultimo IDE di Spring ToolsSuite basato sull'ultimo Eclipse. Quando importare il mio progetto come progetto Maven, Eclipse/STS sembra utilizzare gli obiettivi Maven per la costruzione del mio progetto. Ciò significa che AspectJ funziona correttamente in Eclipse.Perché la trama di Compectable di Spring non è compatibile con AspectJ?
Aggiornamento 4: Ho appena finito di utilizzare il plug-in Maven + AspectJ per la tessitura in fase di compilazione, aggirando in modo efficace il meccanismo di Eclipse.
Aggiornamento 3: Sembra che il plug-in Eclipse di AspectJ rompa la capacità di Eclipse di pubblicare correttamente su Tomcat. Solo rimuovendo la capacità di AspectJ su un progetto posso farlo pubblicare di nuovo correttamente. Molto noioso.
Aggiornamento 2: Ora funziona in Eclipse. Mi fa molto male a dirlo, ma non ho idea di come sia riuscito a farlo funzionare da build Eclipse o Maven. Sembra essere un problema di compilazione piuttosto che un problema di run-time.
Aggiornamento 1: Sembra che abbia funzionato tramite Maven builds, ma non ho idea di come. Eclipse continua a non funzionare. L'unica cosa che ho cambiato nella pom.xml è stata l'aggiunta di questi (insignificanti?) I parametri di configurazione:
<source>1.6</source>
<complianceLevel>1.6</complianceLevel>
<verbose>true</verbose>
<showWeaveInfo>true</showWeaveInfo>
<outxml>true</outxml>
Sono davvero preoccupato che ho una ripetizione del this problem, dove tutto funziona in modo incoerente. Terrò questa domanda aggiornata man mano che imparo di più.
Per quanto riguarda Eclipse, ho fatto dei progressi prendendo gli aspetti binari che desidero tessere - in questo caso spring-aspects.jar - e copiarlo dal mio classpath. Quindi aggiungo questo jar ora esterno al mio Aspect Path . Dopo aver fatto ciò, Eclipse mostra correttamente i marcatori AspectJ nel mio codice. È fastidioso che non posso lasciare spring-aspects.jar nel mio Java Build Path che è gestito da Maven per me tramite il plug-in Maven. Per qualche motivo, tuttavia, il plug-in AspectJ non vede gli aspetti binari a meno che non siano esplicitamente aggiunti al percorso Aspect.
post originale: @Configurable è un'annotazione molla che consente dipendenze da iniettare in oggetti istanziati esterno molla (per esempio, di sospensione o una classe di fabbrica).
Stavo usando questa annotazione in precedenza con la tessitura a tempo di caricamento ed è per lo più lavorato. Occasionalmente mi avvio e niente viene iniettato. Questo problema ha generato this StackOverflow question. Non c'erano molte risposte, ma la maggior parte suggeriva di provare la tessitura in compile invece di una maggiore affidabilità.
Ho installato il plug-in AspectJ per Eclipse e Maven. Entrambi producono quelle che sembrano essere classi correttamente compilate. Ho aperto una delle classi in un editor di testo prima della compilation di AspectJ e non ho trovato riferimenti ad AspectJ. L'ho aperto dopo la compilazione di AspectJ e entrambe le versioni generate da Eclipse e Maven hanno un riferimento a org.aspectj.weaver.MethodDeclarationLineNumber. Questo è il motivo per cui presumo che sia stato compilato correttamente.Il problema è che una volta distribuito, nessuna iniezione viene iniettata.
la mia primavera applicationContext.xml non includono i seguenti:
<context:spring-configured />
<context:component-scan base-package="com.myapp" />
È quanto sopra tutto ciò che serve per le classi contrassegnati @Configurable di aver DI fatto? Durante la conversione da load-time tessitura per compilare in tempo la tessitura, ho rimosso META-INF/aop.xml, < contesto: load-time tessitore /> dal mio applicationContext.xml, e Tomcat tessitrice di primavera dal mio context.xml.
Come posso approfondire questo problema? Quali sono le possibili cause?
è necessario aggiungere 1.6 complianceLevel> alla configurazione di aspectj-maven-plugin altrimenti termina con un errore (configure.incompatibleComplianceForSource) in base al messaggio di errore probabilmente perché ComplianceLevel è di default 1.4 e si differenzia dalle impostazioni di origine che è 1.6 nel tuo caso –
dopo aver applicato questo consiglio ho affrontato il problema che i miei test non funzionano perché vengono invocati aspetti aspetto e l'aspetto interno non esiste campi inizializzati quindi vedo NPE – gstackoverflow