Pytania otagowane jako dependency-injection

Wzorzec projektowy mający na celu zmniejszenie sprzężeń między komponentami poprzez dynamiczne wprowadzanie do komponentu oprogramowania zależności, których potrzebuje on do działania.

11
Kod testów jednostkowych z zależnością od systemu plików
Piszę komponent, który mając plik ZIP, musi: Rozpakuj plik. Znajdź konkretną bibliotekę dll wśród rozpakowanych plików. Załaduj tę bibliotekę dll przez odbicie i wywołaj na niej metodę. Chciałbym przetestować jednostkowo ten komponent. Kusi mnie, aby napisać kod, który zajmuje się bezpośrednio systemem plików: void DoIt() { Zip.Unzip(theZipFile, "C:\\foo\\Unzipped"); System.IO.File myDll …

7
Czy ServiceLocator jest anty-wzorcem?
Ostatnio przeczytałem artykuł Marka Seemanna na temat anty-wzorca Service Locator. Autor wskazuje dwa główne powody, dla których ServiceLocator jest anty-wzorcem: Problem z używaniem API (z którym jestem w porządku) Gdy klasa korzysta z lokalizatora usług, bardzo trudno jest zobaczyć jego zależności, ponieważ w większości przypadków klasa ma tylko jeden konstruktor …

2
InvalidOperationException: nie można rozpoznać usługi dla typu „Microsoft.AspNetCore.Http.IHttpContextAccessor”
Zacząłem konwertować mój projekt rdzenia RC1 asp.net do RC2 i napotkałem problem, który teraz IHttpContextAccessornie został rozwiązany. Dla uproszczenia utworzyłem nowy projekt ASP.NET RC2 przy użyciu Visual Studio Template ASP.NET Core Web Application (.Net Framework). Następnie dodałem konstruktora dla HomeController, który utworzył dla mnie szablon. public HomeController(IHttpContextAccessor accessor) { } …



21
Czy zastrzyk zależności musi odbywać się kosztem enkapsulacji?
Jeśli dobrze rozumiem, typowym mechanizmem wstrzykiwania zależności jest wstrzyknięcie albo przez konstruktor klasy, albo przez właściwość publiczną (składową) klasy. To uwidacznia wstrzykiwaną zależność i narusza zasadę hermetyzacji OOP. Czy mam rację w identyfikacji tego kompromisu? Jak radzisz sobie z tym problemem? Zobacz także moją odpowiedź na moje własne pytanie poniżej.

4
Spring Expression Language (SpEL) z @Value: dolar vs. hash ($ vs. #)
Jestem trochę zdezorientowany, kiedy używać w ${...}porównaniu do #{...}. Dokumentacja Springa używa tylko #{...}, ale jest wiele przykładów, które używają ${...}. Ponadto, kiedy zacząłem ze SpEL, powiedziano mi, żebym go używał ${...}i działa dobrze. Dla tych, którzy są zdezorientowani, byłby przykład tego, jak go używam @Component public class ProxyConfiguration { …

4
Ioc / DI - Dlaczego muszę odwoływać się do wszystkich warstw / zestawów w punkcie wejścia aplikacji?
(W związku z tym pytaniem, EF4: dlaczego tworzenie serwera proxy musi być włączone, gdy jest włączone ładowanie z opóźnieniem? ). Jestem nowy w DI, więc wytrzymaj ze mną. Rozumiem, że kontener jest odpowiedzialny za tworzenie instancji wszystkich moich zarejestrowanych typów, ale w tym celu wymaga odwołania do wszystkich bibliotek DLL …

3
ContextLoaderListener czy nie?
Standardowa aplikacja internetowa Spring (stworzona przez Roo lub szablon „Spring MVC Project”) tworzy plik web.xml z użyciem ContextLoaderListeneri DispatcherServlet. Dlaczego nie tylko używają DispatcherServleti sprawiają, że ładują całą konfigurację? Rozumiem, że ContextLoaderListener powinien być używany do ładowania rzeczy, które nie są istotne dla sieci, a DispatcherServlet służy do ładowania odpowiednich …

4
Do czego ma służyć adnotacja javax.inject.Named?
Próbuję zrozumieć javax.injectpakiet i nie wiem, co tojavax.inject.Named ma służyć adnotacja. Javadoc nie wyjaśnia stojącej za nim idei. Javadoc jest dostępny pod adresem http://download.oracle.com/javaee/6/api/javax/inject/Named.html Używam Springa 3.0 do napisania kilku przykładowych programów, zakładając @Namedziarno, które wydaje się dodawać je do fabryki fasoli, ale opis Javadoc jest tak lekki, że nie …

21
Jak wstrzyknąć okno do usługi?
Piszę usługę Angular 2 w TypeScript, z której skorzystam localstorage. Chcę wprowadzić odniesienie do przeglądarki windowobiektu w mojej służbie, ponieważ nie chcę, aby odwołać wszelkie zmienne globalne jak Kątowymi 1.x $window. W jaki sposób mogę to zrobić?

6
Przekazywanie danych do komponentów potomnych „router-outlet”
Mam komponent nadrzędny, który trafia na serwer i pobiera obiekt: // parent component @Component({ selector : 'node-display', template : ` <router-outlet [node]="node"></router-outlet> ` }) export class NodeDisplayComponent implements OnInit { node: Node; ngOnInit(): void { this.nodeService.getNode(path) .subscribe( node => { this.node = node; }, err => { console.log(err); } ); …

8
Wstrzyknięcie zależności z Jersey 2.0
Zaczynając od zera bez wcześniejszej wiedzy na temat Jersey 1.x, trudno mi zrozumieć, jak skonfigurować wstrzykiwanie zależności w moim projekcie Jersey 2.0. Rozumiem również, że HK2 jest dostępny w Jersey 2.0, ale nie mogę znaleźć dokumentów, które pomogłyby w integracji Jersey 2.0. @ManagedBean @Path("myresource") public class MyResource { @Inject MyService …

4
.NET Core DI, sposoby przekazywania parametrów do konstruktora
Posiadanie następującego konstruktora usługi public class Service : IService { public Service(IOtherService service1, IAnotherOne service2, string arg) { } } Jakie są możliwości przekazywania parametrów przy użyciu mechanizmu .NET Core IOC _serviceCollection.AddSingleton<IOtherService , OtherService>(); _serviceCollection.AddSingleton<IAnotherOne , AnotherOne>(); _serviceCollection.AddSingleton<IService>(x=>new Service( _serviceCollection.BuildServiceProvider().GetService<IOtherService>(), _serviceCollection.BuildServiceProvider().GetService<IAnotherOne >(), "" )); Czy jest inny sposób?

16
Jakie są zalety kontenerów iniekcji zależności?
Rozumiem korzyści płynące z samego wstrzyknięcia zależności. Weźmy na przykład wiosnę. Rozumiem również zalety innych funkcji Springa, takich jak AOP, pomocników różnego rodzaju itp. Zastanawiam się tylko, jakie są zalety konfiguracji XML, takich jak: <bean id="Mary" class="foo.bar.Female"> <property name="age" value="23"/> </bean> <bean id="John" class="foo.bar.Male"> <property name="girlfriend" ref="Mary"/> </bean> w porównaniu …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.