Я новичок в Dependency Injection, и недавно мне пришлось выучить Spring и Guice. Вопрос ниже может быть довольно хромым.
Spring позволяет создавать объекты-прототипы с аннотацией @Scope ("prototype"), означающей, что каждый раз возвращается новый объект
Например, в моем пружинном контейнере: -
@Scope("prototype")
@Bean
A getA(){
return new A();
}
И новый объект A вводится во всех ссылках @ autowired.
class B {
@Autowired
A objA;
}
Однако в инжекторе guice вводится тот же экземпляр. Похоже, что guice предоставляет только одноэлементные области, области запросов или сеансов https://github.com/google/guice/wiki/Scopes. Мое приложение не является точно веб-службой, и мне интересно, как внедрить новые экземпляры объекта везде. Я читал, что провайдер можно использовать, но я не смог найти ни одного слабого / простого примера для понимания.
Как я могу ввести новые экземпляры A в B или любой другой класс? С Guice, в настоящее время я могу внедрить только один экземпляр со всеми классами, как показано ниже в контейнере guice
bind(A.Class).toInstance(new A());
new B(); // or create with other ways