2012-08-15 15 views

risposta

28

Aaron, io credo che il codice è corretto, ma ho usato il seguente:

B bean = new B(); 
AutowireCapableBeanFactory factory = applicationContext.getAutowireCapableBeanFactory(); 
factory.autowireBean(bean); 
factory.initializeBean(bean, "bean"); 

Il primo metodo elaborerà @Autowire campi e metodi (ma non proprietà classiche). Il secondo metodo invoca la post-elaborazione (@PostConstruct e qualsiasi numero definito BeanPostProcessor s).

Il contesto dell'applicazione può essere ottenuto in un bean se implementa l'interfaccia ApplicationContextAware.

+0

Forse il mio codice è sbagliato. 'processInjection()' riempirà solo i campi '@ Autowired' mentre il codice dovrebbe elaborare' @ PostConstruct' (almeno secondo JavaDoc). : -/ –

+2

Crea anche un proxy dinamico, se la classe è stata annotata con annotazione '@ Transactional', ad esempio? – jeromerg

Problemi correlati