Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的方面不';不行?_Java_Spring_Spring Aop - Fatal编程技术网

Java 为什么我的方面不';不行?

Java 为什么我的方面不';不行?,java,spring,spring-aop,Java,Spring,Spring Aop,我想在出现@ValidPassword注释后在控制台中打印“Hell yeah”。我就是这样做的 注释: public @interface ValidPassword { } 方面: import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @Aspect public class ValidPasswordAspect { @Before("@annotati

我想在出现
@ValidPassword
注释后在控制台中打印“Hell yeah”。我就是这样做的

注释:

public @interface ValidPassword {

}
方面:

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;


@Aspect
public class ValidPasswordAspect {


    @Before("@annotation(ru.tenet.smsc.annotation.ValidPassword)")
    public void myAdvice(){ 
        System.out.println("Hell yeah");
    }



}
xml:


org.springframework.security.core.context.SecurityContextHolder
setStrategyName
模式\可继承线程本地
/WEB-INF/db/hibernate.cfg.xml
org.hibernate.cfg.AnnotationConfiguration
假的
org.hibernate.dialen.oraclealent
真的
UTF-8
UTF-8
/WEB-INF/tiles.xml
用法:

@RequestMapping(value = "/sms/single", method = RequestMethod.GET)
    @ValidPassword
    public String singleSMSPage(Map<String, Object> map,
            @ModelAttribute("singleSMSForm") SingleSMSForm singleSMSForm) {
        map.put("title", "Отправка одного сообщения");
        return "singleSMS";
    }
@RequestMapping(value=“/sms/single”,method=RequestMethod.GET)
@有效密码
公共字符串SinglesMessage(映射,
@ModelAttribute(“SinglesForm”)SinglesForm SinglesForm{
地图放置(“标题”、“标题”、“标题”;
返回“单条短信”;
}

但控制台中没有“是的”。为什么?

aop:aspectj autoproxy
需要在您希望其作用的同一应用程序上下文中指定,这意味着您的控制器在哪里定义(或自动检测)


这是一个经常发生的错误,它不起作用的原因是方面检测和实现是
BeanPostProcessor
s工作的结果。和
BeanPostProcessor
s在定义的应用程序上下文中起作用。在一个web应用程序中,通常有两个这样的应用程序上下文,很多时候是aop内容,事务性的,如果未在正确的应用程序上下文中定义此类行为,则自动连线可能会失败。

您可以展示spring配置吗?
aop:aspectj autoproxy
需要在您希望其作用的同一应用程序上下文中指定,这意味着您的控制器被定义(或自动检测)的位置@Tony您从未打开aop引擎:添加
和aop相关的头条目。它可以工作。把它写成一个答案。
@RequestMapping(value = "/sms/single", method = RequestMethod.GET)
    @ValidPassword
    public String singleSMSPage(Map<String, Object> map,
            @ModelAttribute("singleSMSForm") SingleSMSForm singleSMSForm) {
        map.put("title", "Отправка одного сообщения");
        return "singleSMS";
    }