Разделить приложение GWT-Platform на несколько проектов - PullRequest
1 голос
/ 20 июня 2011

В настоящее время я разрабатываю приложение GWTP, которое растет, поэтому я хочу разработать его, чтобы в будущем я мог разделить его на две или более частей.

Учтите, что я работаю над проектом P, который можно концептуально разделить на два проекта P1 и P2, над которыми работают люди из двух разных команд. Затем P1 и P2 будут делиться общими вещами, например расширениями стандартных классов докладчиков, общими докладчиками и представлениями, конфигами и так далее. Я хотел бы создать приложение, которое будет суммой P1, P2 и общего проекта Px, которое будет зависимостью двух других проектов и проекта GWTP.

Я не знаю, возможно ли это сделать, но я думаю, что главная проблема заключается в том, что мне понадобятся три Ginjectors, один общий и два расширения, по одному для каждого проекта.

Есть ли пример, который справляется с такой ситуацией? Или я должен попробовать другой подход?

1 Ответ

1 голос
/ 21 декабря 2011

Если я правильно понял ваш комментарий, я бы сказал, что вам не нужна оболочка, а скорее библиотека, которая предоставляет функциональность через модули GWT (см. здесь ). Каждый из этого модуля может использовать GWTP и DI, но без Ginjector. Вы скорее предоставляете модули джина, где вы конфигурируете свои зависимости модуля. В вашем приложении, где создан ваш ginjector, вы просто устанавливаете модули gin вашей библиотеки.

!!! Не забывайте: при использовании GWTP у вас также есть DI на стороне сервера, который работает точно так же.

Пример для клиентской стороны. Предположим, у нас есть два, скажем, компонента, которые являются составной частью некоторых страниц и т. Д. P1 и P2. Затем создайте два модуля GWT с конфигами модулей, такими как P1.gwt.xml и P2.gwt.xml. Каждый из этих модулей имеет GinModule, например

public class P1GinModule extends AbstractGinModule {

    @Override
    protected void configure() {
        // bind your presenters, views, etc..
    }
}

В вашем приложении A1 вы создаете свою конфигурацию джина, в которую вы устанавливаете нужные модули, в данном случае P1GinModule и P2GinModule

public class A1GinModule extends AbstractGinModule {

    @Override
    protected void configure() {
        install(new P1GinModule());
        install(new P2GinModule());
    }
}

Ваш ginjector должен выглядеть следующим образом:

@GinModules(A1GinModule.class)
public interface AppInjector extends Ginjector {
    // what ever you need ...
}

Примечание: в конфигурации вашего приложения, скажем, A1.gwt.xml, не забудьте наследовать два модуля GWT.

При таком подходе все внедрения зависимостей работают для разных модулей, которые развернуты в библиотеках и предоставлены через модули GWT.

Надеюсь, это помогло.

...