1

操作を実行しているユーザーのコントローラーにログインする必要があります。各コントローラの各メソッドにログ メッセージを書き込む代わりに。私はそれをaspectjでやろうと考えています。

コントローラーを含むパッケージ com.bbvaglobalnet.manager.controller があり、このパッケージとサブパッケージのクラスのすべてのパブリック メソッドでログ メッセージを出力したいと考えています。だからセクション6.2.3.4を見ている

Spring アスペクト指向プログラミング

私の表現はこれだと思います

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/>

私の英語で申し訳ありませんが、それは私の母国語ではありません

4

1 に答える 1