操作を実行しているユーザーのコントローラーにログインする必要があります。各コントローラの各メソッドにログ メッセージを書き込む代わりに。私はそれをaspectjでやろうと考えています。
コントローラーを含むパッケージ com.bbvaglobalnet.manager.controller があり、このパッケージとサブパッケージのクラスのすべてのパブリック メソッドでログ メッセージを出力したいと考えています。だからセクション6.2.3.4を見ている
私の表現はこれだと思います
execution(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/>
私の英語で申し訳ありませんが、それは私の母国語ではありません