7

Spring IOC のアスペクトを構成するには、Spring のドキュメント「Spring IoC を使用して AspectJ アスペクトを構成する」によると、xml 構成に以下を追加する必要があります。

<bean id="profiler" class="com.xyz.profiler.Profiler"
      factory-method="aspectOf">
  <property name="profilingStrategy" ref="jamonProfilingStrategy"/>
</bean>

@SotiriosDelimanolis で提案されているように、これを JavaConfig で次のように書き換えると機能するはずです。

@Bean
public com.xyz.profiler.Profiler profiler() {
    com.xyz.profiler.Profiler profiler = com.xyz.profiler.Profiler.aspectOf();
    profiler.setProfilingStrategy(jamonProfilingStrategy()); // assuming you have a corresponding @Bean method for that bean
    return profiler;
}

ただし、これは、Profilerアスペクトがネイティブのspectj.aj構文で記述されている場合にのみ機能するようです。Java で記述され、注釈が付けられている場合@Aspect、次のエラー メッセージが表示されます。

メソッドspectOf()は、型Profilerに対して未定義です

@AspectJ 構文で記述されたアスペクトに対して JavaConfig を使用してこれを記述する同等の方法はありますか?

4

2 に答える 2

14

org.aspectj.lang.Aspects特にこの目的のために提供するクラスがあることがわかりました。このaspectOf()メソッドは LTW によって追加されたようです。そのため、XML 構成では正常に機能しますが、コンパイル時には機能しません。

この制限を回避するためにorg.aspectj.lang.Aspects、メソッドを提供しますaspectOf():

@Bean
public com.xyz.profiler.Profiler profiler() {
    com.xyz.profiler.Profiler profiler = Aspects.aspectOf(com.xyz.profiler.Profiler.class);
    profiler.setProfilingStrategy(jamonProfilingStrategy()); // assuming you have a corresponding @Bean method for that bean
    return profiler;
}

これが将来誰かに役立つことを願っています。

于 2014-04-04T20:12:01.890 に答える
1

JavaConfig を使用してこれを記述する同等の方法はありますか?

ほとんどいつも。

@Bean
public com.xyz.profiler.Profiler profiler() {
    com.xyz.profiler.Profiler profiler = com.xyz.profiler.Profiler.aspectOf();
    profiler.setProfilingStrategy(jamonProfilingStrategy()); // assuming you have a corresponding @Bean method for that bean
    return profiler;
}

これについては、静的ファクトリ メソッドによるインスタンスfactory-method化のドキュメントで説明されています。

于 2014-04-04T03:20:19.047 に答える