1

アプリケーションで GWT を使用しています。写真をキャッシュするには、ClientBundle と ImageResource を使用します。次のような多くの ClientBundles があります。

public interface MenuBundle extends ClientBundle { 

  @Source(background.png) 
  ImageResource background();

  @Source(image_bg.png) 
  ImageResource image_bg();

...

}

そして、次のような同じメソッドを持つ数百の ClientBundles:

    public interface House1 extends House, ClientBundle { 

      @Source(house1/pic1.png) 
      ImageResource pic1();

      @Source(house1/pic2.png) 
      ImageResource pic2();

      @Source(house1/pic3.png) 
      ImageResource pic3();

    ...

    }

    public interface House2 extends House, ClientBundle{ 

      @Source(house2/pic1.png) 
      ImageResource pic1();

      @Source(house2/pic2.png) 
      ImageResource pic2();

      @Source(house2/pic3.png) 
      ImageResource pic3();

    ...

    }

   public interface House { 

      ImageResource pic1();

      ImageResource pic2();    

      ImageResource pic3();

    ...

    }

その結果、「*.cache.png」のようなサーバーに何百もの写真があります。読み込みを高速化するには、必要な写真が少なくて済みます。この目的のために、私は決定を見つけました:

public class ClientBundleModule extends AbstractGinModule {

 @Override
 protected void configure() {
  bind(MenuBundle.class).to(ClientBundlePack1.class);
  bind(NatureFuture.class).to(ClientBundlePack1.class);
  ...
  bind(House1.class).to(ClientBundlePack2.class);
  bind(House2.class).to(ClientBundlePack2.class);
  bind(House3.class).to(ClientBundlePack2.class);
  ...
 }
}

public interface ClientBundlePack1 extends MenuBundle, NatureFuture, ... {
}

public interface ClientBundlePack2 extends House1, House2, House3, ... {
}

Ginjector もありますが、問題は次のとおりです。

ClientBundlePack1 の MenuBundle、NatureFuture、およびその他のクラスは 1 つの全体像にコンパイルされますが (これは良いことです)、House1、House2、House3 およびその他のハウスは 1 つの全体像にコンパイルされません (悪いことです)。

ハウスは、各クラスのハウスを 1 つの図にまとめます。実装を拡張するJavaの方法に問題があり、pic1のような同じメソッドを1つだけ使用する代わりに、すべてのメソッドpic1を使用します。

しかし、私はすべての家を 1 つの写真に参加させる必要があります。GINがそれを行うための設定、注釈があります。または、すべてのハウスに参加する他の方法はありますか? しかし、ハウスのコードを書き直すことはできません。アプリケーションのアーキテクチャが壊れてしまいます。「遅延読み込み」なしで、プリロード直後にすべての家が必要です。

ありがとう。

4

0 に答える 0