스파이웨어에서 Guice로 종속성 주입을 사용하려는 스윙 응용 프로그램이 있습니다. Guice를 사용하여 구성 및 작업 대기열과 같은 서비스를 제공하는 것은 좋지만 이제는 응용 프로그램의 GUI를 시작하고 진행 방법을 확신 할 수 없습니다.Swice 응용 프로그램에서 Guice를 사용하는 방법
응용 프로그램은 기본적으로 JTabbedPane
에 여러 개의 탭이있는 JFrame
입니다. 각 탭은 다양한 구성 요소를 배치하고 특정 버튼을 눌렀을 때 작업을 수행하는 서비스가 필요한 별도의 JPanel
하위 클래스입니다. 현재 응용 프로그램에서
,이 같은 다소 같습니다
@Inject
public MainFrame(SomeService service, Executor ex, Configuration config) {
tabsPane = new JTabbedPane();
// Create the panels for each tab and add them to the tabbedpane
somePanel = new SomeTabPanel(service, ex, config);
tabsPane.addTab("Panel 1", somePanel);
someOtherPanel = new SomeOtherTabPanel(service, ex, config);
tabsPane.addTab("Panel 2", someOtherPanel);
... do more stuff
}
은 물론,이 정확히 DI 모범 사례를 따르지 않습니다. 내가 수십 개의 매개 변수를 가진 생성자를 얻을 것이기 때문에 @Inject
탭을 갖고 싶지 않습니다. Guice를 사용하여 필요한 종속성을 탭 생성자에게 전달하지 않고 필요한 탭 객체에 필요한 종속성을 주입하려고합니다.
탭 개체에 대한 종속성의 모든
그래서 기본적으로 모든 나는 내가하고 싶은 필요한 개체에 대한 Guice을 부탁하고 나를 위해 건설 한 생각 , 내Module
가 알고있는 서비스입니다.
내가 소유하고있는 Guts-GUI 프로젝트를 살펴볼 수 있습니다. 이것은 Swing 응용 프로그램을 작성하기위한 Guice 기반 프레임 워크입니다. 아직 공식적으로 발표되지는 않았지만 현재로서는 상당히 효과적입니다. URL은 다음과 같습니다. http://kenai.com/projects/guts/pages/Guts-gui – jfpoilpret
간단히 살펴 봤지만 응용 프로그램을 완전히 다시 작성해야합니다. 저는 이미 매우 강력한 작업 실행 시스템과 이벤트 버스를 가지고 있습니다. 신청서는 크지 않지만 (약 20kloc), 시작을 고려하지 않을만큼 충분히 크다. –