我在一个包中有3个豆子,我想成为热切的单身人士。
public class Module1 implements Module {
@Override
public void configure(Binder binder) {
binder.bind(Bean1.class).asEagerSingleton();
binder.bind(Bean2.class).asEagerSingleton();
binder.bind(Bean3.class).asEagerSingleton();
}
}
我怎样才能将它们全部配置为热切的单身人士而没有使用Google Guice精确编写类名?
我正在寻找像某些自定义注释标记Bean1,Bean2,Bean3或按包名扫描的东西。
答案 0 :(得分:4)
我会做这样的事情:
@Override
protected void configure() {
try {
for (ClassInfo classInfo:
ClassPath.from(getClass().getClassLoader()).getTopLevelClasses("my.package.name")) {
bind(classInfo.load()).asEagerSingleton();
}
} catch (IOException e) { // Do something
}
}
ClassPath
来自Guice 4所依赖的Guava图书馆。如果您正在使用Guice 3,则可能需要添加此依赖项。
可能还有第三方库包含@EagerSingleton
注释,FWIW。