【问题标题】:the method of my aspectj pattern doesn't work我的aspectj模式的方法不起作用
【发布时间】:2013-07-08 01:02:27
【问题描述】:

我必须登录我的控制器,哪个用户正在执行操作。而不是在每个控制器的每个方法中写入日志消息。我考虑用 aspectj 来做。

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

的第 6.2.3.4 节

Spring aspect oriented programming

我觉得我的表情是这样的

执行(公共 * 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 已注册,并且我尝试过使用另一种不同的模式和类接缝来工作

我的 spring aop 上下文配置

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

对不起,我的英语不是我的母语

【问题讨论】:

    标签: java logging aop spring-aop aspect


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      相关资源
      最近更新 更多