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.
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 …
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 …
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) { } …
Czytałem w niektórych postach o Spring MVC i Portletach, że iniekcja pola nie jest zalecana. Jak rozumiem, wstrzyknięcie pola ma miejsce, gdy wstrzykujesz Fasolę w @Autowirednastępujący sposób: @Component public class MyComponent { @Autowired private Cart cart; } W trakcie moich badań czytałem również o iniekcji konstruktora : @Component public class …
Powiedzmy, że mamy klasę: public class MyClass { @Autowired private AnotherBean anotherBean; } Następnie stworzyliśmy obiekt tej klasy (lub inny framework stworzył instancję tej klasy). MyClass obj = new MyClass(); Czy nadal można wstrzykiwać zależności? Coś jak: applicationContext.injectDependencies(obj); (Myślę, że Google Guice ma coś takiego)
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.
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 { …
(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 …
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 …
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 …
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ć?
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 …
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?
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 …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.