«dependency-injection» 태그된 질문

작동해야하는 소프트웨어 구성 요소 종속성에 동적으로 주입하여 구성 요소 간 연결을 줄이는 디자인 패턴입니다.

11
파일 시스템 종속성이있는 단위 테스트 코드
ZIP 파일이 주어지면 다음을 수행 해야하는 구성 요소를 작성 중입니다. 파일을 압축 해제하십시오. 압축이 풀린 파일 중에서 특정 dll을 찾으십시오. 리플렉션을 통해 해당 dll을로드하고 그것에 대한 메소드를 호출하십시오. 이 구성 요소를 단위 테스트하고 싶습니다. 파일 시스템을 직접 다루는 코드를 작성하려고합니다. void DoIt() { Zip.Unzip(theZipFile, "C:\\foo\\Unzipped"); System.IO.File myDll = File.Open("C:\\foo\\Unzipped\\SuperSecret.bar"); myDll.InvokeSomeSpecialMethod(); …

7
ServiceLocator는 안티 패턴입니까?
최근 Service Locator 안티 패턴에 관한 Mark Seemann의 기사를 읽었습니다 . 필자는 ServiceLocator가 안티 패턴 인 두 가지 주요 이유를 지적합니다. API 사용법 문제 (완전히 괜찮습니다) 클래스가 서비스 로케이터를 사용할 때 대부분의 경우 클래스에 PARAMETERLESS 생성자가 하나만 있으므로 종속성을 확인하기가 매우 어렵습니다. ServiceLocator와 달리 DI 방식은 생성자의 매개 변수를 통해 …

2
InvalidOperationException : 'Microsoft.AspNetCore.Http.IHttpContextAccessor'유형의 서비스를 확인할 수 없습니다.
내 asp.net 코어 RC1 프로젝트를 RC2로 변환하기 시작했고 이제는 IHttpContextAccessor해결되지 않는 문제에 직면했습니다 . 간단하게하기 위해 Visual Studio Template을 사용하여 새로운 ASP.NET RC2 프로젝트를 만들었습니다 ASP.NET Core Web Application (.Net Framework). 템플릿이 만든 HomeController의 생성자를 추가 한 것보다. public HomeController(IHttpContextAccessor accessor) { } 응용 프로그램을 시작한 후 다음 오류가 발생합니다. …

4
Field Injection이란 정확히 무엇이며 어떻게 피할 수 있습니까?
필드 주입 이 권장되지 않는 Spring MVC 및 Portlets에 대한 일부 게시물을 읽었습니다 . 내가 이해하는 것처럼 필드 주입 은 다음과 @Autowired같이 Bean을 주입하는 것입니다. @Component public class MyComponent { @Autowired private Cart cart; } 내 연구 중에 생성자 주입에 대해서도 읽었습니다 . @Component public class MyComponent { private final …

21
의존성 주입은 캡슐화를 희생해야합니까?
올바르게 이해하면 Dependency Injection의 일반적인 메커니즘은 클래스 생성자를 통해 또는 클래스의 공용 속성 (구성원)을 통해 주입하는 것입니다. 이것은 주입되는 의존성을 드러내고 캡슐화의 OOP 원칙을 위반합니다. 이 트레이드 오프를 식별하는 것이 정확합니까? 이 문제를 어떻게 처리합니까? 아래의 내 질문에 대한 답변도 참조하십시오.

4
Spring에서 자체 인스턴스화 된 객체에 종속성을 주입하는 방법은 무엇입니까?
수업이 있다고 가정 해 봅시다. public class MyClass { @Autowired private AnotherBean anotherBean; } 그런 다음이 클래스의 객체를 만들었습니다 (또는 다른 프레임 워크에서이 클래스의 인스턴스를 만들었습니다). MyClass obj = new MyClass(); 여전히 의존성을 주입 할 수 있습니까? 다음과 같은 것 : applicationContext.injectDependencies(obj); (Google Guice에는 이와 같은 것이 있다고 생각합니다)

4
@Value를 사용하는 Spring Expression Language (SpEL) : 달러 대 해시 ($ 대 #)
에 ${...}비해 언제 사용할 지에 대해 약간 혼란 스럽 습니다 #{...}. Spring의 문서는. 만 사용 #{...}하지만 ${...}. 또한 SpEL로 시작했을 때 사용하라는 지시를 받았으며 ${...}제대로 작동합니다. 헷갈리는 분들을 위해 제가 사용하는 방법의 예는 @Component public class ProxyConfiguration { @Value("${proxy.host}") private String host; @Value("${proxy.port}") private String port; : } 및 일부 …

4
Ioc / DI-응용 프로그램의 진입 점에서 모든 레이어 / 어셈블리를 참조해야하는 이유는 무엇입니까?
(이 질문과 관련하여 EF4 : 지연로드가 활성화 된 경우 프록시 생성을 활성화해야하는 이유는 무엇입니까? ). 저는 DI를 처음 사용하므로 참아주세요. 컨테이너가 등록 된 모든 유형의 인스턴스화를 담당하고 있지만 그렇게하려면 내 솔루션의 모든 DLL과 해당 참조에 대한 참조가 필요하다는 것을 이해합니다. DI 컨테이너를 사용하지 않았다면 MVC3 앱에서 EntityFramework 라이브러리를 참조 할 …

3
ContextLoaderListener 여부?
표준 스프링 웹 애플리케이션 (Roo 또는 "Spring MVC 프로젝트"템플릿으로 생성)은 ContextLoaderListener및 DispatcherServlet. 왜를 사용 DispatcherServlet하여 전체 구성을로드하는 데 사용하지 않습니까? ContextLoaderListener를 사용하여 웹과 관련이없는 항목을로드해야하고 DispatcherServlet을 사용하여 웹 관련 항목 (컨트롤러, ...)을로드해야한다는 것을 이해합니다. 결과적으로 부모와 자식 컨텍스트의 두 가지 컨텍스트가 생성됩니다. 배경: 나는 몇 년 동안이 표준적인 방식으로 그것을하고 …

4
javax.inject.Named 주석은 무엇을 위해 사용됩니까?
javax.inject패키지 를 이해하려고하는데 javax.inject.Named주석이 무엇에 사용되어야 하는지 명확하지 않습니다 . Javadoc은 그 뒤에 숨은 아이디어를 설명하지 않습니다. Javadoc은 http://download.oracle.com/javaee/6/api/javax/inject/Named.html에 있습니다. 저는 Spring 3.0 을 사용하여 샘플 프로그램을 작성하고 있습니다 @Named. Bean 을 넣어서 Bean Factory에 추가하는 것처럼 보이지만 Javadoc 설명이 너무 가벼워 표준 동작인지 Spring 특정 동작인지 알 수 없습니다. …


8
Jersey 2.0을 사용한 종속성 주입
이전 Jersey 1.x 지식없이 처음부터 시작하여 Jersey 2.0 프로젝트에서 종속성 주입을 설정하는 방법을 이해하는 데 어려움을 겪고 있습니다. HK2는 Jersey 2.0에서 사용할 수 있다는 것도 알고 있지만 Jersey 2.0 통합에 도움이되는 문서를 찾을 수없는 것 같습니다. @ManagedBean @Path("myresource") public class MyResource { @Inject MyService myService; /** * Method handling HTTP …

4
.NET Core DI, 생성자에 매개 변수를 전달하는 방법
다음 서비스 생성자 보유 public class Service : IService { public Service(IOtherService service1, IAnotherOne service2, string arg) { } } .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 >(), "" )); 다른 방법이 있습니까?

16
의존성 주입 컨테이너의 이점은 무엇입니까?
의존성 주입 자체의 이점을 이해합니다. 예를 들어 Spring을 보자. 또한 AOP, 다른 종류의 도우미 등과 같은 다른 Spring 기능의 이점을 이해합니다. 다음과 같은 XML 구성의 이점이 무엇인지 궁금합니다. <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> 다음과 같은 일반 오래된 자바 코드와 비교 : …

7
Angularjs는 모범 사례 축소
나는 http://www.alexrothenberg.com/2013/02/11/the-magic-behind-angularjs-dependency-injection.html을 읽고 있는데 자바 스크립트를 축소하면 angularjs 종속성 주입에 문제가 있음이 밝혀졌습니다. 대신에 궁금하다 var MyController = function($scope, $http) { $http.get('https://api.github.com/repos/angular/angular.js/commits') .then(function(response) { $scope.commits = response.data }) } 당신은 사용해야합니다 var MyController = ['$scope', '$http', function($scope, $http) { $http.get('https://api.github.com/repos/angular/angular.js/commits') .then(function(response) { $scope.commits = response.data }) }] 대체로 두 번째 …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.