3

我正在使用以下结构,但失败但未能创建代理调用。

在控制器-servlet.xml

<context:component-scan base-package="com.controller" />
    <mvc:annotation-driven/>
    <mvc:resources mapping="/static/**" location="/static/" />    
    <mvc:default-servlet-handler/>

在 application-context.xml 中

<context:component-scan base-package="com.common" />
    <context:component-scan base-package="com.dao" />
    <mvc:annotation-driven/>

    <aop:aspectj-autoproxy />   

    <!-- Aspect Bean Definition 
    <bean id="aspectBean" class="com.common.AspectImple" /> -->

方面类

package com.common;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class AspectImple {


    @Before("execution(* com.controller.JobController.*(..))")
        public void beforeImpl() {
           System.out.println("  Before Done ");
    }

}

控制器类

@Controller
    public class JobController {

        @RequestMapping(method = RequestMethod.GET, value = "/xyz")
        public ModelAndView abc(HttpServletRequest request,
            HttpServletResponse response) {
            ...
            m1(10);
            ...
            }
    }

    public void m1(int i){
        System.out.println(" AOP Done ");
    } 

AOP 不工作,并且在调用 abc(..) 和 m1(..) 方法期间,没有调用 beforeImpl()。有人可以帮我解决这个问题。

4

3 回答 3

5

搬家怎么办

<context:component-scan base-package="com.dao" />
<mvc:annotation-driven/>

<aop:aspectj-autoproxy />   

从 application-context.xml 到 controller-servlet.xml?

要应用的方面和 bean 需要在同一个 ApplicationContext 中,但 ApplicationContext 不知道 WebApplicationContext 。

于 2013-07-24T13:51:06.470 回答
5

我有同样的问题,但正在使用基于注释的配置。为了让 AOP 为 @Controller 工作,这样做就成功了:

@Configuration
@EnableAspectJAutoProxy(proxyTargetClass=true)
@ComponentScan(basePackages = {"com.mypackage"})
public class MvcConfig extends WebMvcConfigurationSupport
{
    ...

    @Bean
    public MyAspect myAspect()
    {
        return new MyAspect();
    }

}
于 2014-06-27T14:56:51.373 回答
0

Spring AOP Advice on Annotated Controllers - 是一个很好的答案 http://mergetag.com/spring-aop-advice-on-annotated-controllers-2/

于 2014-05-01T15:44:41.787 回答