Quando si utilizza AspectJ, perché utilizzare @Component su @Configurable.Configurable vs Component with Spring and AspectJ
Ho installato Spring e AspectJ per il supporto @Transactional, aspetti sull'invocazione automatica e l'iniezione in entità JPA. Funziona alla grande
Sto usando @Component per la maggior parte delle classi che necessitano di iniezione, e quindi le ho iniettate nelle loro dipendenze. Oppure, quando non riesco, iniettare ApplicationContext e quindi utilizzare getBean() come ultima risorsa. E riservo @Configurable solo alle entità JPA (Hibernate) che necessitano di iniezione. Ho anche iniziato a usare @Configurable per i test di jUnit, per rendere facili i test di scrittura. Anche questo funziona alla grande.
Ma sono curioso. Se AspectJ è ora auto-injecting (beanifying) di qualsiasi cosa con l'annotazione @Configurable, indipendentemente da come è stato costruito; getBean(), new(), @Autowired. Perché non dovrei semplicemente usare @Configurable per tutti i miei bean? Quindi posso eliminare del tutto il contesto dell'applicazione e getBean(), e solo new() qualsiasi classe che non posso iniettare.
Mi rendo conto che non ho fatto menzione della configurazione del bean XML. Non me ne lascio indietro, ma a questo progetto non è richiesto alcuno. Il costruttore o setter mi inietta le dipendenze durante il test. molto facile.