我的方面模式的方法不起作用

时间:2013-07-10 07:34:01

标签: java logging aop spring-aop aspect

我必须登录我的控制器,用户正在执行该操作。而不是在每个控制器的每个方法中写入日志消息。我想用aspectj做这件事。

我有一个com.bbvaglobalnet.manager.controller包,它包含控制器,我希望在这个包和子包的类的所有公共方法中输出日志消息。所以看看

的第6.2.3.4节

Spring aspect oriented programming

我认为我的表达是这个

执行(public * com.bbvaglobalnet.manager.controller .. (..))

我的方面课程如下

package com.bbvaglobalnet.manager.aspects;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import com.bbvaglobalnet.manager.controller.*;

@Aspect
@Component
public class LogUserAspect {

private final static Logger LOGGER = LoggerFactory.getLogger(LogUserAspect.class); 

@Before("execution(public * com.bbvaglobalnet.manager.controller..*.*(..))") 
public void logUser2(JoinPoint jp) {

    LOGGER.info("[User: {}]", SecurityContextHolder.getContext().getAuthentication().getName());
}

}

我知道bean已注册,我尝试过另外一种不同的模式和类接缝工作

我的春天aop上下文配置

<context:component-scan base-package="com.bbvaglobalnet.manager.aspects" />
<aop:aspectj-autoproxy/>

对不起我的英文,这不是我的第一语言

1 个答案:

答案 0 :(得分:0)

为什么要用代理包装控制器?多数民众赞成在我看来像重新发明轮子。根据servlet规范,如果你想拦截对servlet的调用并对请求和/或响应进行一些处理,你应该仔细看看this

相关问题