2013-08-02 4 views
1

В файле .java я могу использовать «GetProperty (PARAMETER_NAME)»Использование параметра в .xml-файле?

Чтобы получить там значение параметра

У меня есть этот блок кода в .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> 

Я хочу сделать это, чтобы не иметь связи (четвёртая линия) жёстко

Так четвёртая строка должна выглядеть примерно так

<value>getProperty(PARAMETER_NAME)</value> 

Что можно использовать в этом XML-файле для достижения этого?

EXTRA:

Я использую JasperReports сервер 5.0.1

Мое дерево выглядит что-то вроде этого

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

EDIT:

Я реализованное решение user2550754, но не может заставить его работать

См комментарий в пост user2550754 в

UPDATE НА ФАЙЛЫ СЕЙЧАС:

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 
+0

Возможный дубликат [Как установить динамическую ссылку компонента в Spring?] (Http://stackoverflow.com/questions/9124982/how-to-set-the-dynamically-a-bean-reference -in-spring) – Shashi

ответ

1

Использовать свойство Spring Spring более поздняя возможность:
1. файл конфигурации для внешнего использования,
2. загрузить org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
3.заменить <value>${x.y.z}</value>

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> 
+0

Должно ли мое значение = "classpath: application.properties" /> be? Я пробовал значение = "classpath: internal \ jasperserver-pro.properties" /> Не повезло. Я отредактировал мое сообщение, чтобы показать, как выглядит дерево. – Andre

+0

try 'http: // //internal/jasperreports.properties' – user2550754

+0

Я должен заменить фактическим хостом и портом, я не могу этого сделать, потому что это ставит я вернулся на Square 1 – Andre

2

В последнем варианте нс весны вы можете загрузить свойства в одной строке с помощью 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" /> 

и использовать их, используя ${key} синтаксис в XML-файле:

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

или в аннотации:

@Value("${someParameterKey}") 
private String someParameter; 
Смежные вопросы