Я пытаюсь найти ответ, который должен быть возвращен Guice MethodInterceptor. В чем разница между возвращаемым методомInvocation.proceed(); и возврат null;Какой метод GuiceInterceptor должен возвращать
Вот моя ситуация: в некоторых случаях пользователь имеет право ссылаться на какой-то метод в некоторых случаях. Я хочу реализовать такую ситуацию, используя guice aop.
Что мне нужно вернуть, если я не хочу использовать метод? И в чем разница между возвратом null и любым другим объектом.
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AOPEstablisher{
}
class GuiceModule extends AbstractModule{
@Override
protected void configure() {
GuiceExampleAop guiceExampleAop = new GuiceExampleAop();
requestInjection(guiceExampleAop);
bindInterceptor(Matchers.any(), Matchers.annotatedWith(AOPEstablisher.class), guiceExampleAop);
}
}
class CommandExecutor{
@AOPEstablisher
public void executeInSomeCases(){
//I want to execute this command in some cases
}
}
и вот перехватчик класс:
import org.aopalliance.intercept.MethodInterceptor;
public class GuiceExampleAop implements MethodInterceptor {
@Inject
User user;
@Override
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
if(user.hasRigths(){
return methodInvocation.proceed();
else{
return null?
return methodInvocation?
//what should be returned here?
// what is difference between returning methodInvocation and null
}
}
}
Спасибо за вашу помощь.
BTW: У вас возникнут проблемы с введением пользователя в метод перехватчика, потому что вам нужно создать экземпляр перехватчиков самостоятельно во время bind() ... –