Domanda

Se aggiungo solo < aop: aspectj-autoproxy proxy-target-class = " false " / > all'inizio del mio contesto primaverile, ogni singolo bean che implementa un'interfaccia ottiene un proxy JDK. Vorrei davvero limitare il proxy A) alle classi che effettivamente necessitano di proxy o B) classi che ho specificato come proxy che necessitano.

Ho provato a usare la stanza aop: scoped-proxy all'interno di una definizione di bean xml per i bean che hanno bisogno di proxy, ma sembra che questo non mi dia consigli aop.

Ho anche provato ad aggiungere < aop: aspectj-autoproxy .... > verso la fine del mio file XML di primavera, ma prima di aggiungere tutti i bean che necessitano di proxy, ma sembra non funzionare correttamente.

Ho un lotto di bean con interfacce ma solo una manciata (ben definita) ha bisogno di consigli su AoP, e quei proxy stanno rovinando i miei stacktraces alla grande. (Ho sbirciato alla primavera 3.0 e sospetto che sarà possibile lì, ma sembra che sia un po 'di tempo).

È possibile in 2.5.X?

È stato utile?

Soluzione

Come si può vedere nella riga 67 di AbstractAdvisorAutoProxyCreator.java (primavera 2.5.6), il creatore di autoproxy fa davvero solo quello che gli chiedo. Non esegue automaticamente l'autoproxy più di quanto ritenga necessario.

Si scopre che il tipo di espressione pointcut che usi influenza notevolmente la capacità di proxy di questa classe; l'annotazione che stavo usando era

@Around(value="@target(myannotation)")

Questo in pratica significa che spring genera un proxy che decide di intercettare in base al tipo di destinazione di invocazione effettiva. Il rovescio della medaglia è che la primavera cerca di farlo con tutti i fagioli disponibili nel contenuto dell'applicazione. Se invece avessi usato qualcosa come @ entro, spring userebbe l'interfaccia per decidere se dovrebbe avvenire l'autoproxying, e questo può essere staticamente determinato al momento della creazione del applicationcontesto.

Quindi ora ho solo due classi con proxy;)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top