只有当它在当前范围内可用时,我才需要注入一个字段,否则为空。例如:
public class Thinger implements Provider<SomeSuch> {
public @Inject(optional=true) HttpServletRequest request;
public SomeSuch get() {
return request == null ? new WhosIt() : WhatsIt();
}
}
但是,如果 HttpServletRequest 已绑定(确实如此)但不在范围内,我会收到 ProvisioningException。我已经能够找到一种优雅的方式来做到这一点,所以我只能做类似的事情。
HttpServletRequest request = null;
try {
request = injector.getInstance(HttpServletRequest.class);
} catch(ProvisioningException e) {}
只是感觉很不对劲。有没有合适的方法来做到这一点?