Я пытаюсь понять, как внедрить объект при регистрации AuthDynamicFilter в jersey.
public class CustomApplication extends Application<Configuration> {
public void run(Configuration configuration, Environment environment) throws Exception {
...
environment.jersey().register(new AuthDynamicFeature(CustomAuthFilter.class));
...
}
}
CustomAuthFilter
@PreMatching
public class CustomAuthFilter<P extends Principal> extends AuthFilter<String, P> {
private final Object identity;
@Context
private HttpServletRequest httpServletRequest;
@Context
private HttpServletResponse httpServletResponse;
public LcaAuthFilter(Identity identity) {
this.identity = identity;
}
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
...identity.process(httpServletRequest)
}
}
Приведенный выше код не будет компилироваться, потому что нет возможности внедрить объект Identity при создании CustomAuthFilter.
Если вы go с:
environment.jersey().register(new AuthDynamicFeature(new CustomerAuthFilter(new Identity())));
В этом случае httpServletRequest будет иметь значение null.
Единственный способ выяснить, как обойти это даже не использовать AuthDynamicFeature, а просто go с обычным фильтром и вводить его таким образом, что нормально. Мне интересно, как бы вы сделали это с помощью AuthDynamicFeature.
Я все еще новичок в dropwizard и jersey, поэтому, пожалуйста, терпите меня. Некоторые концепции, которые я мог бы запутать.
Любые советы оценены, спасибо, Дерек