2010-05-27 18 views
16

Ho una piuttosto semplice classe astrattaPrimavera, classe astratta e le annotazioni

public abstract class AbstractServiceActions { 

    @Autowired 
    protected DatabaseModel dbModel; 

    protected User user; 
    protected boolean complete; 
    protected String serviceResult; 

    public AbstractServiceActions(User user) { 
     this.user = user; 
     this.serviceResult = ""; 
    } 

    public abstract String doAction(); 
    } 

Ora potete vedere, sto cercando di autowire il DatabaseModel. Ma nella mia classe estesa ricevo solo null per dbModel.

@Component 
public class CreateDatabaseAction extends AbstractServiceActions { 
.... 
} 

Domanda: Sto cercando qualcosa di impossibile qui?

+0

Stai utilizzando il componente spring-scan del pacchetto in cui si trova la classe astratta? –

risposta

22

La configurazione sembra corretta. La ragione forse sta altrove. Forse stai istanziando la classe con new CreateDatabaseAction(), piuttosto che lasciare che la molla faccia questo.

+0

buon punto. Verificherò questo – onigunn

+1

+1: Spring consente di autowiring in classi astratte, quindi il tuo suggerimento ha senso! – Espen

+0

sì, era proprio questo ... – hakish

1

Utilizzare @Autowired e non @Inject da javax.inject.

L'iniezione di dipendenza in classe astratta funziona solo per la primavera @Autowired.

FYI, sto usando Spring 4.0; Java 6

+0

Anche l'annotazione '@ Resource' funziona. – Jason

Problemi correlati