我正在使用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
我借助thread确定了问题所在。但是我不能改变coreMessageResourceAccesor bean来使用基于setter的注入,因为它使用了一个spring类&该类没有arg构造函数
以下是bean的配置
<bean id="coreMessageSourceAccessor"
class="org.springframework.context.support.MessageSourceAccessor" >
<constructor-arg type="org.springframework.context.MessageSource"
ref="coreMessageSource" />
</bean>
如果有人能提供帮助我真的很感激。谢谢你的时间。
答案 0 :(得分:0)
您不需要真正需要将MessageSourceAccessor
访问器配置为bean,通常可以根据需要手动实例化它。因此,不是将MessageSourceAccessor
注入到bean中,而是注入原始MessageSource
,然后根据需要将其包装在MessageSourceAccessor
中(即使用new MessageSourceAccessor(messageSource)
)。
然后,您可以将建议放在MessageSource
而不是MessageSourceAccessor
周围,这样会更好。此外,MessageSourceAccessor
本身不会增加任何重要的处理时间,它只是MessageSource
周围的薄包装。