我在我的应用程序中使用 GWT。对于缓存图片,我使用带有 ImageResource 的 ClientBundle。我有很多这样的 ClientBundle:
public interface MenuBundle extends ClientBundle {
@Source(background.png)
ImageResource background();
@Source(image_bg.png)
ImageResource image_bg();
...
}
以及数百个具有相同方法的 ClientBundle,如下所示:
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等类编译成一张大图(好),但是House1、House2、House3等House没有编译成一张大图(不好)。
房屋将每个班级房屋编译在一张图片中。我在扩展实现的 java 方式中看到了问题,只使用一种像 pic1 一样的方法,而不是使用所有方法 pic1。
但我需要在一张照片中加入所有房屋。GIN 有设置、注释可以做到这一点。或者有没有其他方法可以加入所有的房子?但是我不能重写 Houses 的代码,它会破坏我的应用程序的架构。我需要在预加载后立即所有房屋,而不是“延迟加载”。
谢谢。