我开发了一个Spring mvc应用程序,我想读取一些属性值 来自位于weblogic服务器内的属性文件。
已执行以下步骤:
在以下路径中创建了一个项目特定文件夹appConfig:Oracle/Middleware/ORACLE_HOME/user_projects/domains/wl_server/config/rmsConfig
在其中放置名为commonConfig.properties的属性文件。
还使用以下条目
编辑了setDomainEnv.cmd
if NOT "%EXT_POST_CLASSPATH%"=="" (
set EXT_POST_CLASSPATH=%EXT_POST_CLASSPATH%;%DOMAIN_HOME%\config\appConfig
if NOT "%POST_CLASSPATH%"=="" (
set POST_CLASSPATH=%POST_CLASSPATH%;%EXT_POST_CLASSPATH%
) else (
set POST_CLASSPATH=%EXT_POST_CLASSPATH%
)
)
请在下面找到我的Spring bean配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">
<bean id="commonProps" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="commonConfig" />
<property name="cacheSeconds" value="120" />
</bean>
</beans>
在我的Java Spring bean类中,我引用如下:
@Component
public class LocationClient{
@Autowired
private MessageSource commonProps;
public void showMessage(){
System.out.println(commonProps.getMessage("common.line", null, null, null));
}
}
现在commonProps
非空但是&#34; common.line&#34;在控制台中打印 null 。
请在下面找到属性文件条目:
common.line=382
任何人都有任何合适的解决方案???
答案 0 :(得分:0)
我认为您必须在classpath或 WEB-INF 文件夹中添加属性文件。
这是Java Spring文档中的注释。
对于典型的Web应用程序,可以放入消息文件 WEB-INF:例如a&#34; WEB-INF / messages&#34; basename会找到一个 &#34; WEB-INF / messages.properties&#34;,&#34; WEB-INF / messages_en.properties&#34;等等 安排以及&#34; WEB-INF / messages.xml&#34;, &#34; WEB-INF / messages_en.xml&#34;等。请注意a中的消息定义 由于以前的资源包将覆盖以后的捆绑包中的资源包 顺序查找。
请参阅链接以获取更多信息:ReloadableResourceBundleMessageSource
答案 1 :(得分:0)
一种可能的解决方案是使用ResourceBundleMessageSource
代替ReloadableResourceBundleMessageSource
来定义您的属性,如下所示:
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="commonConfig" />
</bean>
还要确保commonConfig.properties
位于WEB-INF文件夹中,例如,如果您的应用程序是appConfig,那么它应该位于类路径的根目录中:appConfig/WEB-INF/classes/commonConfig.properties
第二个替代如果您需要{class 1}}类外路径,请使用您的第一种方法(确保bean ID为commonConfig.properties
)
messageSource