我有一个春季项目,正在尝试在控制器中实现AOP。

我在applicationContext.xml中添加以下行:

<aop:aspectj-autoproxy/>
<bean id="homeController" class="package.domain.HomeController" />
<bean id="logAspect" class="package.aspect.LoggingAspect" />

我的方面类是这样的:

@Aspect
@Component
public class LoggingAspect {


    protected final Log logger = LogFactory.getLog(getClass());

    @Pointcut("execution( * package.web.HomeController.home(..) )")
    public void poincut() {
    }

    @Before("poincut()")
    public void before(){
        System.out.println("before");
    }

    @AfterReturning("poincut()")
    public void after(){
        System.out.println("after");
    }

    @AfterThrowing("poincut()")
    public void AfterThrowing(){
        System.out.println("AfterThrowing");
    }

}

我的控制器是这样的:

@RequestMapping(value = "/home.htm")
    public ModelAndView home(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        ....

        return new ModelAndView("home", "model", model);
    }

所有人都喜欢,没有错误,并显示以下消息:

DEBUG: org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory - Found AspectJ method: public void package.aspect.LoggingAspect.before()
DEBUG: org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory - Found AspectJ method: public void package.aspect.LoggingAspect.after()
DEBUG: org.springframework.aop.aspectj.annotation.ReflectiveAspectJAdvisorFactory - Found AspectJ method: public void package.aspect.LoggingAspect.AfterThrowing()

如果更改我的切入点并使用下一行,它将起作用,但是当我选择一个控制器失败时:

@Pointcut("execution( * *(..) )")

谢谢!!

#1楼 票数:0

如果对您有用,请继续:

@Pointcut("execution( * *(..) )")

并通过同一方面中的其他切入点将方面限制为您的控制器:

@Pointcut("within(@package.web.HomeController *)")
public void controllerBean() {}

  ask by Javier Oliver translate from so

未解决问题?本站智能推荐:

1回复

Spring控制器上的Aop注释不起作用

我已经为aop做了一个注释。 当我在任何方法而不是控制器方法中使用它时,它运行良好。 但是,当我在控制器的方法中使用它时,我的控制器停止工作。 它开始为映射提供404未找到的错误。 我在这里发现了一个类似的问题: 带有AOP拦截器的Spring 3 MVC @Controller? 但
2回复

在SpringMVC中拦截@responsebody

我有一个带有控制器的Spring MVC Web应用程序,如下所示: 用户进行搜索时将调用Controller。 应用程序中有多个这样的控制器,每个可搜索实体一个。 由于我无法很好解释的原因,在这里,无论如何我都无法修改这些控制器。 但是现在,我需要在用户界面中显示搜索条件和否。
1回复

使用带有客户注释的带有弹簧控制器功能的AOP

我有一个用例,其中我想截取用我的Custom注释注释的Spring控制器函数。 我们将其称为@CustomerAnnotation。 我有一个控制器MyController 我的AspectJ课: 但是,每当我调用API时,都会收到以下异常: 我的CustomerAnnotat
2回复

与Spring中的AOP配置有关的一些疑问

我正在学习Spring Core认证,并且对Spring如何处理AOP有疑问。 阅读文档似乎可以理解存在两种获取Java AOP的方法: 使用AspectJ时 ,使用字节码修改进行方面编织可提供一种成熟的面向方面的编程语言。 (因此在我看来, AspectJ是一种可以与Java集成以
3回复

关于带注释控制器的SpringAOP建议

我试图使用AOP在带注释的控制器之后进行一些处理。 一切都在运行,没有错误,但建议没有被执行。 这是控制器代码: 和application-config中的设置 和实际的建议 甚至可以在带注释的控制器上获得建议吗? 我使用的是Spring 2.5。
2回复

如何从Spring控制器获取AOP建议中的RequestMapping请求?

给定某种带有请求映射的控制器 您将如何检索方面类中的方法值(RequestMethod.POST)? 我想跟踪执行POST请求的所有控制器方法。 谢谢
3回复

如何在Spring3中将@Aspect与@Controller结合起来?

我正在尝试使用@Controller,基于注释的方法设置Spring 3 Web MVC项目。 我的dispatcher-servlet具有以下Controller处理程序: 使用提供的maven工件,webapp运行良好: 现在我想添加@AspectJ AOP。 我得到了libs
2回复

为SpringMVCController-AOP或SpringSecurity的方法传递密码?

我已经使用Spring MVC了很短的时间了,它带有带注释的JSP页面控制器。 我有一个与此类似的课程: 如您所见,每个呼叫都会传入一个密码参数。从对话框中读取密码,并将其传递到提交的每个呼叫中​​。 我想从方法调用中删除password参数,以获取“更干净”的代码。 为此,我快速