Мы используем код ниже, чтобы внедрить бины Spring со свойствами из файла свойств.
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:/my.properties"/>
</bean>
<bean id="blah" class="abc">
<property name="path" value="${the.path}"/>
</bean>
Есть ли способ, которым мы можем получить доступ к свойствам программно? Я пытаюсь сделать код без внедрения зависимостей. Поэтому я хотел бы просто иметь такой код:
PropertyPlaceholderConfigurer props = new PropertyPlaceholderConfigurer();
props.load("classpath:/my.properties");
props.get("path");
spring
properties
Маркус Леон
источник
источник
Ответы:
Как насчет PropertiesLoaderUtils ?
источник
PropertyPlaceholderConfigurer
, хотя это слишком для задачи.Если все, что вы хотите сделать, это получить доступ к значению-заполнителю из кода, есть
@Value
аннотация:Для доступа к заполнителям из SPEL используйте этот синтаксис:
Чтобы выставить конфигурацию представлениям, у которых отключен SPEL, можно использовать этот прием:
А затем используйте exposer для предоставления свойств представлению:
Затем в представлении используйте выставленные свойства, как это:
Преимущество этого решения заключается в том, что вы можете положиться на стандартную реализацию заполнителя, введенную тегом context: property-placeholder.
И последнее замечание: если вам действительно нужно захватить все свойства заполнителей и их значения, вы должны передать их через StringValueResolver, чтобы убедиться, что заполнители работают внутри значений свойств, как и ожидалось. Следующий код сделает это.
источник
КРЕДИТ : Программный доступ к свойствам в Spring без повторного чтения файла свойств
Я нашел хорошую реализацию программного доступа к свойствам весной без перезагрузки тех же свойств, которые уже были загружены весной. [Кроме того, не требуется жестко задавать местоположение файла свойств в источнике]
С этими изменениями код выглядит чище и более понятным.
Концепция довольно проста. Просто расширьте местозаполнитель свойства пружины по умолчанию (PropertyPlaceholderConfigurer) и запишите свойства, которые он загружает, в локальную переменную
Пример использования
Изменения конфигурации Spring
Надеюсь, это поможет решить ваши проблемы
источник
Я сделал это, и это сработало.
Это должно работать.
источник
Вы также можете использовать утилиты Spring или загрузить свойства через PropertiesFactoryBean.
или:
Затем вы можете забрать их в своем заявлении с помощью:
и дополнительно используйте эти свойства в вашей конфигурации:
Это также в документации: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#xsd-config-body-schemas-util-properties
источник
Создайте класс, как показано ниже
Тогда везде, где вы хотите получить доступ к собственности, используйте
- написать геттеры и сеттеры в классе доступа
источник
Как вы знаете, более новые версии Spring не используют PropertyPlaceholderConfigurer, а теперь используют другую кошмарную конструкцию с именем PropertySourcesPlaceholderConfigurer. Если вы пытаетесь получить разрешенные свойства из кода и хотите, чтобы команда Spring дала нам способ сделать это давным-давно, тогда проголосуйте за этот пост! ... Потому что так ты это делаешь по-новому:
Подкласс PropertySourcesPlaceholderConfigurer:
Чтобы использовать его, обязательно используйте ваш подкласс в вашей @Configuration и сохраните ссылку на него для дальнейшего использования.
Использование:
источник
Вот еще один пример.
источник
Это поможет мне:
источник
Это разрешит любые вложенные свойства.
источник
Вы можете получить свои свойства через
Environment
класс. В качестве документации выступает:Имея Environment в качестве
env
переменной, просто вызовите:Вы можете получить свои «сырые» свойства через:
Он будет искать по всем источникам свойств, которые были зарегистрированы весной.
Вы можете получить Среду через:
ApplicationContextAware
а затем вызватьgetEnvironment()
контекстEnvironmentAware
.Это достигается за счет реализации класса, поскольку свойства разрешаются на ранней стадии запуска приложения, так как они могут потребоваться для построения компонента.
Подробнее о документации: весенняя экологическая документация
источник
Этот пост также объясняет, как получить доступ к свойствам: http://maciej-miklas.blogspot.de/2013/07/spring-31-programmatic-access-to.html
Вы можете получить доступ к свойствам, загружаемым Spring-свойством-заполнителем поверх такого Spring-компонента
источник
в servlet-context.xml после этого вы можете напрямую использовать ваш файл везде
источник
Пожалуйста, используйте приведенный ниже код в вашем весеннем конфигурационном файле, чтобы загрузить файл из пути к классам вашего приложения
источник
Это самый лучший способ заставить его работать:
источник