Home  >  Article  >  Web Front-end  >  The aop page is not applicable in the controller_html/css_WEB-ITnose

The aop page is not applicable in the controller_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 11:51:011003browse

The problem is as follows

Today I found that aop cannot be used in the controller. It can be used if it is replaced with service. It can also be used with junit-test, but it cannot be placed under tomcat. I am confused. Got it! ! !

package com.tutor.normal.filter;import javax.annotation.Resource;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.tutor.normal.service.ITutorUserService;/** *  * @author jinghao.liang *  */@Aspectpublic class TutorLoginAop {    private static Logger log = LoggerFactory.getLogger(TutorLoginAop.class);    @Resource(name = "tutorUserService")    private ITutorUserService tutorUserService;    @Pointcut("execution(* com.tutor.normal.controller..*.*(..))")    private void anyMethod() {    }// 定义一个切入点    @Before("anyMethod() && args(name)")    public void doAccessCheck(String name) {        System.out.println(name);        System.out.println("前置通知");    }    @AfterReturning("anyMethod()")    public void doAfter() {        System.out.println("后置通知");    }    @After("anyMethod()")    public void after() {        System.out.println("最终通知");    }    @AfterThrowing("anyMethod()")    public void doAfterThrow() {        System.out.println("例外通知");    }    @Around("anyMethod()")    public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {        System.out.println("进入环绕通知");        Object object = pjp.proceed();// 执行该方法        System.out.println("退出方法");        return object;    }}

spring configuration, plus these two

    <aop:aspectj-autoproxy proxy-target-class="true"/>         <bean id="tutorLoginAop" class="com.tutor.normal.filter.TutorLoginAop" />

Nice, it’s obviously the same as the one on the Internet, what’s going on


After a day of troubleshooting, I finally found the problem. It turns out that the spring configuration should be written in springMVC, not in spring

What does it mean? Look at the configuration of my web.xml

     <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath*:spring/applicationContext.xml</param-value>    </context-param>    <!-- Spring MVC -->    <servlet>        <servlet-name>springMVC</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:spring/spring-servlet.xml</param-value>        </init-param>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>springMVC</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping>

It turns out that I wrote the configuration in applicationContext.xml. Of course it won’t work. TVT needs to be written in spring-servlet.xml. . .

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn