Dependency Injection into your Singleton

Posted by Langali on Stack Overflow See other posts from Stack Overflow or by Langali
Published on 2010-05-18T20:10:51Z Indexed on 2010/05/24 9:31 UTC
Read the original article Hit count: 258

I have a singleton that has a spring injected Dao (simplified below):

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

My spring config will probably look like this:

 <bean id="service" class="MyService" factory-method="getInstance"/>

But this will instantiate the MyService during startup.

Is there a programmatic way to do a dependency injection of MyDao into MyService, but not have spring manage the MyService?

Basically I want to be able to do this from my code:

MyService.getInstance().doSomething();

while having spring inject the MyDao for me.

© Stack Overflow or respective owner

Related posts about spring

Related posts about dependency-injection