2010-05-27 23 views
16

Tengo una bastante simple clase abstractaprimavera, clase abstracta y anotaciones

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(); 
    } 

Ahora se puede ver, estoy tratando de Autowire el modelo de base de datos. Pero en mi clase extendida solo recibo nulo para el modelo dbModel.

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

Pregunta: ¿Estoy intentando algo imposible aquí?

+0

¿Tiene el componente primavera-escanee el paquete en el que se encuentra su clase abstracta? –

Respuesta

22

Su configuración parece estar bien. La razón quizás esté en otro lado. Tal vez estés instanciando la clase con new CreateDatabaseAction(), en lugar de dejar que la primavera lo haga.

+0

buen punto. Lo comprobaré – onigunn

+1

+1: Spring permite el autoenvío en clases abstractas, ¡así que su sugerencia tiene sentido! – Espen

+0

yup, esto fue ... – hakish

1

Use @Autowired y no @Inject de javax.inject.

La inyección de dependencia en la clase abstracta solo funciona para la primavera @Autowired.

FYI, estoy usando Spring 4.0; Java 6

+0

La anotación '@ Resource' también funciona. – Jason

Cuestiones relacionadas