У меня есть ниже пример кода
public interface MyDao {
...
}
public class MyDaoImpl implements MyDao {
...
}
public class MyService {
@Inject
private MyDao myDao;
...
}
public class MyModule extends AbstractModule {
@Override
public void configure() {
bind(MyDao.class).to(MyDaoImpl.class).in(Singleton.class);
}
}
В основном классе у меня
Injector injector = Guice.createInjector(new MyModule());
MyService myService = injector.getInstance(MyService.class);
MyService myService2 = injector.getInstance(MyService.class);
myService
и myService2
- разные объекты.
Если я добавлю ниже код в MyModule
@Provides
@Singleton
public MyService getMyService() {
return new MyService();
}
myService
и myService2
становятся одним и тем же объектом, но переменная myDao
становится нулевой.
Как я могу сделать MyService
синглетон и позволить автоинъекции переменной myDao
без изменения конструктора MyService
?