gpt4 book ai didi

spring - 如何注入(inject) Spring ReloadableResourceBundleMessageSource

转载 作者:行者123 更新时间:2023-12-03 22:58:28 26 4
gpt4 key购买 nike

为了以编程方式刷新资源包缓存,我使用了 Spring 的 ReloadableResourceBundleMessageSource。我无法将它注入(inject)到我想要调用 clearCache() 方法的 bean 中。

我不得不求助于以下方法:

private ReloadableResourceBundleMessageSource messageSource;

@Autowired
public void setMessageSource(MessageSource messageSource) {
this.messageSource = (ReloadableResourceBundleMessageSource((DelegatingMessageSource)messageSource).getParentMessageSource();
}

这行得通,但必须有更好的方法。消息资源定义如下:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames" >
<list>
<value>WEB-INF/content/Content</value>
</list>
</property>
</bean>

我不明白为什么 Spring 会注入(inject) DelegatingMessageSource 类型的消息源。

最佳答案

我不认为在这种情况下按类型 Autowiring 会起作用,因为 Autowiring 候选者很可能是 ApplicationContext本身(参见引用文档的section 3.8.2)。这导致您必须挖掘所有这些层才能获得原始 ReloadableResourceBundleMessageSource .

尝试传递对 messageSource 的引用bean 通过 XML 配置代替。使用 @Qualifier('messageSource') 注释属性应该也可以。

关于spring - 如何注入(inject) Spring ReloadableResourceBundleMessageSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/728455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com