1

在 .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 文件中使用什么来实现这一点?

额外的:

我正在使用JasperReports 服务器 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
4

3 回答 3

2

properties在 Spring 的最新版本中,您可以使用命名空间中的标记在一行中加载属性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" />

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

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

或在注释中:

@Value("${someParameterKey}")
private String someParameter;
于 2013-08-02T09:48:41.600 回答
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>
于 2013-08-02T08:26:31.417 回答
1

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

于 2013-08-02T08:26:17.587 回答