1

私は Spring MVC Web アプリケーションに取り組んでおり、特定のメソッドの AOP ラッパーをセットアップしようとしています。私は次のものを持っていますaop-config.xml

<bean name="callCatcher" class="com.business.project.aop.callCatcher"/>

<aop:config proxy-target-class="true">
    <aop:pointcut expression="execution(* com.business.project.util.className.methodName(..))" id="catchCall"/>
    <aop:advisor advice-ref="callCatcher"  pointcut-ref="catchCall"/>
</aop:config>

ここproxy-target-class="true"で同様の質問が提案された SO で見つかった後に追加されましたが、私の状況では何もしていないようです。

aop-config.xml私のに含まれていservlet-config.xmlます:

<import resource="aop-config.xml"/>

これをデプロイしようとすると、次の例外が発生します。

Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'com.business.project.util.className' to required type 'org.springframework.aop.Pointcut' for property 'pointcut'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [com.business.project.util.className] to required type [org.springframework.aop.Pointcut] for property 'pointcut': no matching editors or conversion strategy found
    at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:463)
    at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:494)
    at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:488)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1433)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1392)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1128)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    ... 37 more

私が傍受しようとしているクラスは、それを使用しているクラスのプロパティとして自動配線されています..それが問題の一部であるかどうか疑問に思っています。それは特別なことではありません:

public class className implements ApplicationContextAware {...}

傍受しようとしているメソッドは公開されています。

他に何を含めるかわかりません。例外であるプロキシをグーグルで検索し、ポイントカット式をチェックしました。どんな助けでも大歓迎です。

編集:

プロジェクトの ivy 構成に cglib を含め、aop-config を次のように設定しました。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">

    <aop:aspectj-autoproxy proxy-target-class="true"/>

    <bean name="callCatcher" class="com.business.project.aop.EditorActionLogger"/>

    <aop:config proxy-target-class="true">
        <aop:pointcut expression="execution(* com.business.project.util.className.methodNAme(..))" id="callCatcher"/>
        <aop:advisor advice-ref="editorActionLogger"  pointcut-ref="timeslotReloader"/>
    </aop:config>
</beans>

それでも同じ例外が発生します。

4

1 に答える 1