@AspectJ プロキシのプログラムによる作成

<aop:config> または <aop:aspectj-autoproxy> を使用して構成内のアスペクトを宣言することに加えて、ターゲットオブジェクトにアドバイスするプロキシをプログラムで作成することもできます。Spring の AOP API の詳細については、次の章を参照してください。ここでは、@AspectJ のアスペクトを使用してプロキシを自動的に作成する機能に焦点を当てたいと思います。

org.springframework.aop.aspectj.annotation.AspectJProxyFactory クラスを使用して、1 つ以上の @AspectJ アスペクトによって推奨されるターゲットオブジェクトのプロキシを作成できます。次の例に示すように、このクラスの基本的な使用箇所は非常に簡単です。

  • Java

  • Kotlin

// create a factory that can generate a proxy for the given target object
AspectJProxyFactory factory = new AspectJProxyFactory(targetObject);

// add an aspect, the class must be an @AspectJ aspect
// you can call this as many times as you need with different aspects
factory.addAspect(SecurityManager.class);

// you can also add existing aspect instances, the type of the object supplied
// must be an @AspectJ aspect
factory.addAspect(usageTracker);

// now get the proxy object...
MyInterfaceType proxy = factory.getProxy();
// create a factory that can generate a proxy for the given target object
val factory = AspectJProxyFactory(targetObject)

// add an aspect, the class must be an @AspectJ aspect
// you can call this as many times as you need with different aspects
factory.addAspect(SecurityManager::class.java)

// you can also add existing aspect instances, the type of the object supplied
// must be an @AspectJ aspect
factory.addAspect(usageTracker)

// now get the proxy object...
val proxy = factory.getProxy<Any>()

詳細については、javadoc を参照してください。