Вам нужно прочитать Python Unicode HOWTO . Эта ошибка является самым первым примером .
В принципе, прекратите использование str
для преобразования из Юникода в кодированный текст / байты.
Вместо этого правильно используйте .encode()
для кодирования строки:
p.agent_info = u' '.join((agent_contact, agent_telno)).encode('utf-8').strip()
или полностью работать в юникоде.
<context:property-placeholder location="classpath*:spring/*.properties" />
Если вы поместите его где-нибудь в classpath в каталог с именем spring (соответственно измените имена / каталоги), вы можете получить доступ с помощью выше
<property name="locations" value ="config/springcontext.properties" />
, это будет указывать на web-inf / классы / Config / springcontext.properties
Вы можете использовать префикс файла для загрузки внешнего файла контекста приложения примерно так
<context:property-placeholder location="file:///C:/Applications/external/external.properties"/>
Этот блог может помочь вам. Хитрость заключается в том, чтобы использовать 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>
Один из способов сделать это - добавить вашу внешнюю папку конфигурации в classpath процесса java. Вот как я часто делал это в прошлом.
Вы можете попробовать что-то вроде этого:
<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/
Кстати, очень полезно в блоге .
Этот вопрос довольно старый, но я хотел бы поделиться тем, что сработало для меня. Надеюсь, что это будет полезно для людей, которые ищут некоторую информацию, получающую доступ к свойствам во внешнем местоположении.
Это то, что сработало для меня.
Содержимое файла свойств:
PROVIDER_URL=t3://localhost:8003,localhost:8004
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}
заменено значением в свойствах файла
<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
Оба варианта работают для меня