遵循文档OptionalBinder
用于绑定可选值的 API,可以选择使用默认值。OptionalBinder 履行两个角色:
- 它允许框架定义一个注入点,该注入点可能受用户约束,也可能不受用户约束。
- 它允许框架提供可由用户更改的默认值。
我正在尝试跟进上面的第一点,为此我有以下设置:
interface Reporting<R> {} // service to be bind optionally
class InternalServiceImpl implements InternalService {
@Inject
Reporting reporting;
... // use this in a method
}
public class FrameworkModule extends AbstractModule {
protected void configure() {
OptionalBinder.newOptionalBinder(binder(), Reporting.class);
}
}
class UserWorkingModule
如果我不提供绑定,则在用户模块( )中
bind(new TypeLiteral<Reporting<ReportingEvent>>(){}).to(ReportingImpl.class).in(Singleton.class);
该应用程序无法启动以下日志:
1) No implementation for Reporting was bound. while locating Reporting for field at InternalServiceImpl.reporting(InternalServiceImpl.java:21) at FrameworkModule.configure(FrameworkModule.java:55) (via modules: UserWorkingModule -> FrameworkModule)
Reporting
是否仍然必须在中提供绑定UserWorkingModule
?