onigunn
onigunn

Reputation: 4778

Spring, abstract class and annotations

I've got a pretty simple abstract class

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

Now you can see, I'm trying to autowire the DatabaseModel. But in my extended class I only recieve null for the dbModel.

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

Question: Am I trying something impossible here?

Upvotes: 27

Views: 37012

Answers (2)

Viswanath
Viswanath

Reputation: 1551

Use @Autowired and not @Inject from javax.inject.

Dependency injection in abstract class only works for spring's @Autowired.

FYI, I'm using Spring 4.0; Java 6

Upvotes: 1

Bozho
Bozho

Reputation: 597036

Your setup seems fine. The reason perhaps lies elsewhere. Maybe you are instantiating the class with new CreateDatabaseAction(), rather than letting spring do this.

Upvotes: 32

Related Questions