在加载bean时如何获得实际值而不是占位符?

时间:2012-07-31 19:13:04

标签: java spring

我在加载bean时获取占位符而不是其属性值。

属性文件

tm.web.keystore.key.password=WaheeD
tm.web.tcp.backlog=1024
tm.web.min.jetty.threads=8
tm.web.max.jetty.threads=25

appcontext.xml文件

<bean class="com.intel.ssg.mconsole.core.web.WebServer" id="webServer">
    <property name="port" value="${tm.web.port}" />
    <property name="address" value="${tm.web.address}" />
    <property name="warLocation" value="${tm.home}/mconsole.war" />
    <property name="secure" value="${tm.web.secure}" />
    <property name="keystoreLocation" value="${tm.web.keystore.location}" />
    <property name="keystorePassword" value="WaheeD" />
    <property name="keyPassword" value="${tm.web.keystore.key.password}" />
    <property name="tcpBacklog" value="${tm.web.tcp.backlog}" />
    <property name="minJettyThreads" value="${tm.web.min.jetty.threads}" />
    <property name="maxJettyThreads" value="${tm.web.max.jetty.threads}" />
</bean>

通过marshaller加载

 try {
     FileInputStream fis = new FileInputStream(getAppContextFile());
     try {
         return (Beans) JAXBUtil.getUnmarshaller().unmarshal(fis);
     } finally {
         fis.close();
     }

在Beans中,对于bean webServer端口而言,我获得的价值为$ {tm.weberver.port},而不是它的确切值。提供8443端口。

2 个答案:

答案 0 :(得分:1)

您发布了一个没有任何端口号属性的属性文件,一个使用${tm.web.port}的上下文文件,并且您的文字显示您正在使用${tm.weberver.port}

我看到你错误的三个可能的地方。假设您实际上正在设置其他属性。如果没有,请参阅Andrey的评论。

答案 1 :(得分:1)

您无需从ApplicationContext.xml中明确加载bean。

确保存在以下内容: