gpt4 book ai didi

java - Guice MethodInterceptor 应该返回什么

转载 作者:行者123 更新时间:2023-11-30 03:22:53 24 4
gpt4 key购买 nike

我正在尝试找到 Guice MethodInterceptor 应该返回什么的答案。返回 methodIncation.proceed(); 之间有什么区别并返回 null;

这是我的情况:在某些情况下,用户有权调用某些方法,而某些则没有。我想使用 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
}
}
}

感谢您的帮助。

最佳答案

返回的是方法的结果。如果您想阻止调用,那么您应该抛出异常或返回某种“未经授权”消息。看here .

如果您使用的是 Java8+,我建议最好的选择是更改方法签名以返回可选类型而不是任何类型,并将其返回为空。

关于java - Guice MethodInterceptor 应该返回什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30935074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com