1

トランザクションの処理時間をキャプチャするために、Spring AOP のアドバイスを使用しています。アプリケーションの起動中に次のエラーが発生します

error creating bean "coreMessageResourceAccesor"
   Could not generate CGLIB subclass of class 
     [class org.springframework.context.support.MessageSourceAccessor]: 
Common causes of this problem include using a final class or a non-visible class; 
nested exception is java.lang.IllegalArgumentException: 
   Superclass has no null constructors but no arguments were given

このスレッドの助けを借りて、問題が何であるかを特定しました。しかし、coreMessageResourceAccesor Bean を変更してセッター ベースのインジェクションを使用することはできません。これは、Spring クラスを使用しており、そのクラスには arg コンストラクターがないためです。

以下は、Beanの構成です

<bean id="coreMessageSourceAccessor"
        class="org.springframework.context.support.MessageSourceAccessor" >
    <constructor-arg type="org.springframework.context.MessageSource"
        ref="coreMessageSource" />
</bean>

誰かが助けてくれれば本当にありがたいです。御時間ありがとうございます。

4

1 に答える 1

0

MessageSourceAccessorアクセサーを Bean として構成する必要はありません。通常、必要に応じて手動でインスタンス化する方が簡単です。MessageSourceAccessorしたがって、 を Bean に注入するのではなく、 raw を注入し、必要に応じて (つまり を使用して)MessageSourceにラップします。MessageSourceAccessornew MessageSourceAccessor(messageSource)

MessageSource次に、ではなく の周りにアドバイスを配置するMessageSourceAccessorと、より効果的です。また、MessageSourceAccessorそれ自体が大幅な処理時間を追加することはありません。これは単なる薄いラッパーMessageSourceです。

于 2011-11-11T21:51:00.183 に答える