Guice: Избегайте ленивой инъекции

У меня есть класс Cache, создание которого довольно дорого, но после этого он устанавливается как одноэлементный и внедряется в мой уровень обслуживания.

@Override
protected void configure() {            
    bind(Cache.class).in(Singleton.class);

    bind(Service.class).to(ServiceImpl.class).in(Singleton.class);      
}

@Inject
    public ServiceImpl(Cache cache){
        this.cache = cache;
    }

public Cache(){
//Expensive stuff
}

Моя проблема в том, что это кажется, что public () в кэше выполняется только тогда, когда я пытаюсь получить доступ к одному из его методов

Могу ли я вместо этого создать объект при запуске сервера?

9
задан javaNoober 13 February 2012 в 03:59
поделиться