문제

나는 종종 의존성 주입에 대해 읽었고 Google에 대한 연구를했으며 이론적으로 그것이 무엇을 할 수 있는지, 어떻게 작동하는지 이해하지만, 그것을 사용하는 실제 코드 기반을보고 싶습니다 (Java/Guice가 선호됩니다).

누구든지 내가 볼 수있는 곳, 그것이 실제로 어떻게 사용되는지에 대한 오픈 소스 프로젝트를 가리킬 수 있습니까? 코드를 탐색하고 전체 설정을 보는 것은 웹 주변에서 찾은 소개 기사에서 USUSAL 스 니펫보다 더 많은 것을 보여줍니다. 미리 감사드립니다!

도움이 되었습니까?

해결책

나는 당신이 Java-Land에 있다는 것을 이해하지만 .NET 공간에서는 제어 컨테이너의 역전을 사용하여 작성된 몇 가지 오픈 소스 앱입니다. 체크 아웃 Codecampserver, UI 모듈에 종속성 해상도 모듈에 대한 참조가없는 것. 작업을 수행하는 httpmodule이 있습니다. (httpmodule은 asp.net의 핸들 이벤트를 꽂을 수있는 외부 라이브러리 일뿐입니다. Codecampserver에서 UI 프로젝트는 컴파일 시간 참조없이 런타임 에이 종속성 registrarmodule을로드합니다.)

다른 팁

그만큼 웨이브 프로토콜 서버 내가 가장 좋아하는 예제 앱입니다.

나는이 정확한 문제로 조금 어려움을 겪었다. 너무 추상적이고 단순하여 항상 "잘못하고있는"걱정이되었습니다.

바인딩을 설정하는 Guice 모듈이 주요 프로젝트의 일부이기 때문에 다른 프로젝트에 의존하는 주요 프로젝트에서 사용해 왔습니다.

마침내 라이브러리가 모듈 자체를 공급해야한다는 것을 깨달았습니다. 이 시점에서 모듈의 인스턴스 (특정 모듈이 아님)와 그에 묶인 인터페이스에만 의존 할 수 있습니다.

한 걸음 더 나은 단계를 밟으면 새로운 것을 사용할 수 있습니다. Serviceloader Java 6의 메커니즘 ClassPath에서 사용 가능한 모든 Guice 모듈을 자동으로 찾아 설치하는 메커니즘. 그런 다음 클래스 경로를 변경하여 종속성을 교체 할 수 있습니다 (DB-REAL.JAR vs. DB-MOCK.JAR).

의존성 주입은 제대로 사용하면 시야에서 사라질 수있는 방법이 있다고 생각합니다. 응용 프로그램이 초기화/배선하는 방법 일뿐입니다. 아마도 프레임 워크의 추가 기능을보고있는 것보다 더 멋지게 보이면 더 화려하게 보입니다. 베어 본 의존성 주입이 아닙니다.

편집 : 예제를 찾는 대신 실제로 사용하기 시작한 다음 다시 돌아와서 질문을 게시 할 수 없다면 여기에 질문을 게시하고 다음과 같이 생각해야한다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top