Внешние свойства контекста приложения Spring?

Вам нужно прочитать Python Unicode HOWTO . Эта ошибка является самым первым примером .

В принципе, прекратите использование str для преобразования из Юникода в кодированный текст / байты.

Вместо этого правильно используйте .encode() для кодирования строки:

p.agent_info = u' '.join((agent_contact, agent_telno)).encode('utf-8').strip()

или полностью работать в юникоде.

29
задан Dennis Ich 2 December 2011 в 13:11
поделиться

7 ответов

<context:property-placeholder location="classpath*:spring/*.properties" />

Если вы поместите его где-нибудь в classpath в каталог с именем spring (соответственно измените имена / каталоги), вы можете получить доступ с помощью выше

<property name="locations" value ="config/springcontext.properties" />

, это будет указывать на web-inf / классы / Config / springcontext.properties

11
ответ дан fmucar 2 December 2011 в 13:11
поделиться

Вы можете использовать префикс файла для загрузки внешнего файла контекста приложения примерно так

  <context:property-placeholder location="file:///C:/Applications/external/external.properties"/>
12
ответ дан Prasanna Talakanti 2 December 2011 в 13:11
поделиться

Этот блог может помочь вам. Хитрость заключается в том, чтобы использовать SpEL (язык выражения весны) для чтения системных свойств, таких как user.home, для чтения домашнего каталога пользователя с использованием SpEL, вы можете использовать выражение
#{ systemProperties['user.home']} внутри элементов вашего компонента. Например, чтобы получить доступ к вашему файлу свойств, хранящемуся в вашем домашнем каталоге, вы можете использовать следующее в вашем PropertyPlaceholderConfigurer, у меня это сработало.

 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <value>file:#{ systemProperties['user.home']}/ur_folder/settings.properties</value>
    </property>
</bean>
10
ответ дан Sridhar 2 December 2011 в 13:11
поделиться

Один из способов сделать это - добавить вашу внешнюю папку конфигурации в classpath процесса java. Вот как я часто делал это в прошлом.

2
ответ дан pap 2 December 2011 в 13:11
поделиться

Вы можете попробовать что-то вроде этого:

<context:property-placeholder 
        location="${ext.properties.dir:classpath:}/servlet.properties" />

И определить свойство ext.properties.dir в вашем сервере приложений / jvm, в противном случае расположение свойств по умолчанию "classpath: /" (то есть, классы dir .jar или .war):

-Dext.properties.dir=file:/usr/local/etc/

Кстати, очень полезно в блоге .

47
ответ дан masted 2 December 2011 в 13:11
поделиться

Этот вопрос довольно старый, но я хотел бы поделиться тем, что сработало для меня. Надеюсь, что это будет полезно для людей, которые ищут некоторую информацию, получающую доступ к свойствам во внешнем местоположении.

Это то, что сработало для меня.

  1. Содержимое файла свойств:

    PROVIDER_URL=t3://localhost:8003,localhost:8004
    
  2. applicationContext.xml содержимое файла: (Spring 3.2.3)

    Примечание: ${user.home} является системным свойством ОС.

    <context:property-placeholder system-properties-mode="OVERRIDE" location="file:${user.home}/myapp/latest/bin/my-env.properties"/>
    
    <bean id="appsclusterJndiTemplate" class="org.springframework.jndi.JndiTemplate">
        <property name="environment">
            <props>
                <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
                <prop key="java.naming.provider.url">${PROVIDER_URL}</prop>
            </props>
        </property>
    </bean>
    

${PROVIDER_URL} заменено значением в свойствах файла

6
ответ дан schnittstabil 2 December 2011 в 13:11
поделиться
<context:property-placeholder location="file:/apps/tomcat/ath/ath_conf/pcr.application.properties" />

Это работает для меня. Путь к локальной машине разработки - C: \ apps \ tomcat \ ath \ ath_conf и в файле server / apps / tomcat / ath / ath_conf

Оба варианта работают для меня

1
ответ дан fjkjava 2 December 2011 в 13:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: