在.xml文件中使用参数?

时间:2013-08-02 08:12:31

标签: xml spring jasper-reports jasperserver

在.java文件中,我可以使用“getProperty(PARAMETER_NAME)”

获得参数值

我在.xml中有这段代码

<bean class="org.springframework.security.ui.cas.ServiceProperties"
          id="authenticationServiceProperties">
        <property name="service">
            <value>http://v-repte-lnx.nwc.ac.za:8024/jasperserver-pro/j_spring_cas_security_check</value>
        </property>
        <property name="sendRenew">
            <value>false</value>
        </property>
</bean>

我想做的是没有硬编码的链接(第4行)

所以第4行看起来应该是这样的

<value>getProperty(PARAMETER_NAME)</value>

我可以在此.xml文件中使用什么来实现此目的?

EXTRA:

我正在使用 JasperReports Server 5.0.1

我的树看起来像这样

Webap>
  applicationContext-security.xml
  internal>
      jasperreports.properties

编辑:

我实施了user2550754的解决方案,但无法让它工作

在user2550754的帖子中查看评论

立即更新文件:

applicationContext-security.xml文件

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="../WEB-INF/internal/jasperserver-pro.properties"/>
</bean>

<bean class="org.springframework.security.ui.cas.ServiceProperties"
          id="authenticationServiceProperties">
        <property name="service">
            <value>${SERVICE_URL}</value>
        </property>
        <property name="sendRenew">
            <value>false</value>
        </property>
</bean>

jasperserver-pro.properties文件

SERVICE_URL=http://b-reptes-lnx1.nuw.ac.za:8024/jasperserver-pro/j_spring_cas_security_check

3 个答案:

答案 0 :(得分:2)

将您的配置存储在属性文件中,例如application.properties

url=http://v-repte-lnx.nwc.ac.za:8024/jasperserver-pro/j_spring_cas_security_check

然后,按以下方式添加.xml

<bean id="applicationProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" lazy-init="default">
    <property name="location" value="classpath:application.properties"/>
</bean>

并像这样配置您的代码

<bean class="org.springframework.security.ui.cas.ServiceProperties"
      id="authenticationServiceProperties">
    <property name="service">
        <value>${url}</value>
    </property>
    <property name="sendRenew">
        <value>false</value>
    </property>
</bean>

答案 1 :(得分:2)

在Spring的最新版本中,您可以使用properties命名空间中的util标记在一行中加载属性:

<?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"  
    xsi:schemaLocation="  
        http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> 

    <util:properties id="appProps" location="classpath:app.properties" />

并在xml文件中使用${key}语法使用它们:

<bean id="service" class="com.mycompany.Service">
    <property name="someParameter" value="${someParameterKey}"/>
</bean>

或注释:

@Value("${someParameterKey}")
private String someParameter;

答案 2 :(得分:1)

使用Spring属性占位符功能:
1.外部化配置文件,
2.加载org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
3.替换<value>${x.y.z}</value>