我有一个在Spring MVC文件的xml文件中定义的ResourceBundleMessageSource bean。它的定义如下:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
然而,Intellij标记defaultEncoding
红色和弹出Can not resolve property
。
根据this documentation,ResourceBundleMessageSource
拥有继承自defaultEncoding
类的AbstractResourceBasedMessageSource
财产。以上代码在另一个Spring MVC项目中运行良好。
我的Spring依赖版本是5.0.4,IDEA版本是2017.2.1。
这种奇怪行为的原因是什么?是bug吗?
附录:当我用IDEA反编译ResourceBundleMessageSource
类时,它表明这个类扩展了AbstractMessageSource
,而不是AbstractResourceBasedMessageSource
,就像文档说的那样。
用ResourceBundleMessageSource
替换ReloadableResourceBundleMessageSource
没有错误。
我终于解决了这个问题。我的项目中有一个jersey-spring依赖项:
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-spring</artifactId>
<version>1.19.3</version>
</dependency>
这取决于旧版本的Spring - 3.0.0.RC1。我还明确地在pom.xml文件中包含Spring 5.0.4.RELEASE依赖项。这导致了不同版本之间的冲突,Maven正在解决冲突,转而支持旧版本3.0.0.RC1。我决定删除jersey-spring依赖,现在它工作正常。