2011-11-11 4 views
1

J'utilise les conseils de Spring AOP pour saisir le temps de traitement d'une transaction. Je reçois l'erreur suivante lors du démarrage de l'applicationSpring AOP - Erreur lors de la génération de proxies

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 

J'ai identifié ce que le problème est avec l'aide de ce thread. Mais je ne peux pas changer le haricot coreMessageResourceAccesor d'utiliser l'injection à base setter parce que son utilisation d'une classe de printemps & cette classe n'a pas aucun constructeur arg

Ci-dessous la configuration de la fève

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

Je voudrais vraiment apprécier si quelqu'un pourrait aider. Merci pour votre temps.

Répondre

0

Vous n'avez pas vraiment besoin de configurer l'accesseur MessageSourceAccessor en tant que bean, il est généralement plus facile de l'instancier manuellement si nécessaire. Donc plutôt que d'injecter le MessageSourceAccessor dans vos beans, injectez le MessageSource brut, puis enveloppez-le dans un MessageSourceAccessor comme requis (c'est-à-dire en utilisant new MessageSourceAccessor(messageSource)).

Vous pouvez alors mettre le conseil autour du MessageSource au lieu du MessageSourceAccessor, qui fonctionnera mieux. En outre, MessageSourceAccessor ne sera pas lui-même ajouter un temps de traitement important, c'est juste une enveloppe mince autour de MessageSource.

+0

Merci skaffman. Ceci est une application existante et le bean MessageSourceAccessor est injecté dans un tas de classes différentes, et je ne me sens pas à l'aise de changer toutes les autres classes. Je me demande s'il y a d'autres solutions pour ce problème. s'il vous plaît donnez votre avis – swetha