相关疑难解决方法(0)

Spring aop切入点表达式来访问方法返回类型

我有一个带有许多方法的服务接口,所有这些方法都接受一个Request对象并返回一个Response对象.所有请求对象都有一个共同的祖先,所有响应对象都有一个不同的共同祖先(它有一个成功标志和一个消息字段).

现在,我希望有一个检查权限等的方面,执行服务调用并返回带有失败代码的Response对象(如果有任何失败).问题是:我需要知道要创建什么类型的Response对象.是否有切入点表达式,使我可以访问返回类型?也许是这样的事情?

@Around(value = "execution(public *"
    + " com.mycompany.MyService+.*(..))"
    + " && args(request)"
    + " && returning( returnType)" // something like this would be nice

, argNames = "request,returnType")
public Object handleServiceCall(final ProceedingJoinPoint pjp,
    final Request request,
    final Class<? extends Response> returnType){ ... }
Run Code Online (Sandbox Code Playgroud)

java aop spring pointcuts spring-aop

8
推荐指数
1
解决办法
5843
查看次数

在拦截器的 Spring MVC 控制器方法上使用自定义注释

我有一个自定义注释,我用它在我的控制器中注释了一个方法以及一个 @ReqestMapping。

目标是使用 HandlerInterceptor 的自定义注释中设置的值来执行任务。

我映射了拦截器 (HandlerInterceptorAdaptor) 并执行。如果我在具体的拦截器中设置断点,我可以检查 HttpServletRequest、HttpServletResponse 和处理程序对象。但是,我看不到如何 1,获取请求尝试访问的方法 2,获取该方法的注释,当然 3,获取注释设置的值。

任何人都可以指出我对此的良好文档吗?

谢谢,麻烦您了。

java model-view-controller spring annotations

5
推荐指数
1
解决办法
5704
查看次数

Spring方面调用接口方法上的自定义注释

我有这个界面:

public interface FakeTemplate {

    @CustomAnnotation
    void foo() {

    }

}
Run Code Online (Sandbox Code Playgroud)

以及该接口的实现:

@Component
public FakeImpl implements FakeTemplate {

    @Override
    public void foo() {
        //Do Stuff
    }

}
Run Code Online (Sandbox Code Playgroud)

还有这方面:

@Aspect
@Component
public class CustomAspect {

    @Before(value = "@annotation(com.fake.CustomAnnotation)")
    public void doStuffBefore(JoinPoint joinPoint} {

    }

}
Run Code Online (Sandbox Code Playgroud)

我正在使用启用了 AspectJ 的 spring,使用:@EnableAspectJAutoProxy(proxyTargetClass = true)

我的问题是doStuffBefore在执行 FakeImpl 的方法之前没有调用方面方法foo()@CustomAnnotation当我把onFakeImpl而不是 时,它确实可以工作FakeTemplate,但我更喜欢把注释放在 on 上FakeTemplate,因为它位于单独的 API 包中,并且我将它委托为放置所有注释的地方。

我还想确保CustomAnnotation在每个实现的类上调用 ,FakeTemplate而无需记住在所有实现类本身上添加注释。

如果注释仅在接口类上,有什么方法可以获取要调用的建议吗?

java spring annotations interface spring-aop

5
推荐指数
1
解决办法
5592
查看次数