web-dev-qa-db-ja.com

春にAOPでロギング?

私はオフィスで春を過ごすのは初めてです。だから私にはガイダンスはありません。

log4jを使用して、AOPでロギングを実装する必要があります。

基本的なspring MVCの例でAOPなしでロギングを実装しましたか?

また、ログなしでAOPを使用してaspectJの小さなサンプルを行いました(Sysoutを作成しました)?

私はそれを統合する方法がわかりませんか?

誰でも私にスタートアップのアイデアを教えてもらえますか?

良い答えは間違いなく感謝されます...

18
Human Being

Springを使用すると、AOPを簡単に使用できます。簡単なロギングの例を次に示します。

_@Aspect
public class MyLogger {

    private Logger log = Logger.getLogger(getClass());

    @After("execution(* com.example.web.HomeController.*(..))")
    public void log(JoinPoint point) {
        log.info(point.getSignature().getName() + " called...");
    }
}
_

次に、applicationContext.xml(または同等のもの)を構成します。

_    <aop:aspectj-autoproxy>
        <aop:include name="myLogger"/>
    </aop:aspectj-autoproxy>

    <bean id="myLogger" class="com.example.aspect.MyLogger"/>
_

MyLoggerクラスで、メソッドのすぐ上で_@After_を指定したことに気付くでしょう。これはアドバイスと呼ばれ、基本的にこの 'log'メソッドがafter問題のメソッドと呼ばれることを指定します。他のオプションには_@Before, @Around, @AfterThrowing_が含まれます。

"execution(* com.example.web.HomeController.*(..))"はポイントカット式と呼ばれ、ターゲットとするものを指定します(この場合、HomeControllerクラスのすべてのメソッド)。

追伸aop名前空間(_xmlns:aop="http://www.springframework.org/schema/aop"_)とスキーマの場所(バージョンに依存)は、一番上のapplicationContext.xmlに追加する必要があります。私のセットアップは次のとおりです。

_<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
_
34
Markus Coetzee

Aspectjを統合するには、いくつかの手順を実行する必要があります。

  1. AspectJをインストールします http://www.cs.utep.edu/cheon/cs3360/project/proj1/installing-aspectj.txt
  2. Aop.xmlをプロジェクトのMETA-INF\aop.xmlに追加します
  3. Aspectjrt-x.x.0.jarおよびaspectjweaver-x.x.0.jarをプロジェクトクラスパスに追加します
  4. -javaagent:/ pathをaspectj installation/aspectjweaver-1.7.0.jarにサーバーのJVMに追加します。

サンプルaop.xmlは次のとおりです。

<aspectj>
 <aspects>
  <aspect name="test.MySimpleLoggerAspect" />
 </aspects>
 <weaver>
  <include within="test.myproject.*" />
 </weaver>     
</aspectj>

すでにスプリングを使用している場合は、セットアップを簡素化するためにスプリングを使用する方が良いです、ここに良い例があります http://forum.springsource.org/showthread.php?61551-Bean-Factory-is- not-set-for-BeanConfigurerSupport

0
Avinash Singh