Добавление в качестве нового ответа, пытающегося обратиться к открытым точкам ...
Я хочу интегрировать эту технику
в существующий код, который использует обычный
контейнер. Почему я должен использовать
другой тип контейнера,
GenericApplicationContext в этом
дело? Что делать, если я хочу прочитать данные в
этот объект из существующей весны
Конфиг в app.config или web.config?
Будет ли это работать в обычном контексте?
Могу ли я тогда написать данные по этим
регистрации с кодом?
Spring имеет конкретные реализации контекста приложения для различных видов тактики инициализации. Наиболее распространенными из них являются GenericApplicationContext (руководство), XmlApplicationContext (файлы XML) и WebApplicationContext (очень похоже на XmlApplicationContext, но адаптированные для использования в Интернете). Все они реализуют общий интерфейс: IApplicationContext, который является предпочтительным способом доступа к этим контейнерам.
Неудобное изменение регистраций с помощью кода обычно означает, что вам нужно напрямую использовать конкретный подкласс. С GenericApplicationContext и StaticApplicationContext это вполне естественно, но XmlApplicationContext обычно считается только XML, и это «фиксируется» в определении XML.
Как я могу указать, что ISomeService
быть создан как синглтон? Я не
значит, поставлять единичный экземпляр
контейнер, но контейнер для
создать экземпляр, разрешив его
конструктор, и использовать его, когда этот тип
нужен.
Ваш SpringHelper делает именно это, по умолчанию все объекты в Spring являются одиночными. Вы можете изменить это поведение, вызвав метод SetSingleton ObjectDefinitionBuilder со значением false.
как я могу сделать эквивалент
container.RegisterType (); ? я бы хотел
сопоставления типов регистров для использования во всех
случаи, когда этот тип нужен
Конструктор.
Spring использует имена объектов (идентификаторы) для различения различных реализаций. Поэтому, если вы хотите получить конкретный тип для обслуживания конкретного экземпляра, в случае, если есть много альтернатив, вам следует обратиться к этому конкретному экземпляру по имени. Если вы используете автопроводку, и ваш объект зависит от интерфейса ISomeService, и зарегистрирован только один объект, реализующий его, автопровод может установить его без двусмысленности.
Что именно делает
container.RegisterType ( "обслуживание");
делать? Похоже на регистрацию
ServiceImplementationA как
реализация ISomeService, но
ISomeService никогда не упоминается, поэтому
может быть двусмысленность например что, если
ServiceImplementationA реализовано
более одного интерфейса.
Продолжая предыдущий ответ, здесь регистрируется синглтон типа ServiceImplementationA с именем «service». Этот объект поставляется с кандидатом на автоматическое подключение со всеми реализованными интерфейсами (и, конечно, с конкретным типом).
Какое имя строки дано
регистрация для? Это не будет работать с
en пустая строка, но это не кажется
неважно, что это такое.
Это имеет большое значение, как объяснялось ранее. Имя является уникальным идентификатором в этом контексте (родительский контекст может иметь объект с тем же именем) и может использоваться для доступа к определенным регистрациям объектов. Вкратце, когда другие платформы могут ассоциировать тип как ключ к регистрации объекта, Spring использует name.