Ho un Singleton che ha una molla iniettato Dao (semplificato sotto):Dependency Injection nel vostro Singleton
public class MyService<T> implements Service<T> {
private final Map<String, T> objects;
private static MyService instance;
MyDao myDao;
public void set MyDao(MyDao myDao) {
this. myDao = myDao;
}
private MyService() {
this.objects = Collections.synchronizedMap(new HashMap<String, T>());
// start a background thread that runs for ever
}
public static synchronized MyService getInstance() {
if(instance == null) {
instance = new MyService();
}
return instance;
}
public void doSomething() {
myDao.persist(objects);
}
}
mio config primavera sarà probabilmente simile a questa:
<bean id="service" class="MyService" factory-method="getInstance"/>
Ma questo sarà istanziare il MyService durante l'avvio.
Esiste un modo programmatico per eseguire un inserimento di dipendenza di MyDao in MyService, ma non è necessario gestire Spring MyService?
Fondamentalmente voglio essere in grado di fare questo dal mio codice:
MyService.getInstance().doSomething();
pur avendo primavera iniettare il MyDao per me.
E devi ottenere il bean usando ApplicationContext dove ti serve? – Langali
Vorrei * normalmente * ottenere il mio primo bean di livello superiore all'inizializzazione e quindi fare riferimento a ulteriori bean come richiesto da quel bean di livello superiore. Ma potresti fare ciò che stai suggerendo. –