Я использую пружину. Мне нужно прочитать значения из файла свойств. Это файл внутренних свойств, а не файл внешних свойств. Файл свойств может быть таким, как показано ниже.
some.properties ---file name. values are below.
abc = abc
def = dsd
ghi = weds
jil = sdd
Мне нужно прочитать эти значения из файла свойств не традиционным способом. Как этого добиться? Есть ли какой-нибудь последний подход к Spring 3.0?
spring
properties-file
user1016403
источник
источник
Ответы:
Настройте PropertyPlaceholder в своем контексте:
Затем вы обращаетесь к свойствам вашего beans:
РЕДАКТИРОВАТЬ: обновлен код для анализа свойства с несколькими значениями, разделенными запятыми:
Если это не сработает, вы можете определить bean-компонент со свойствами, ввести и обработать его вручную:
и фасоль:
источник
aaa
? Неужели@Value(${aaa}) private String aaa;
тогда можноSystem.out.println(aaa)
???????@Value("${aaa}")
цитаты. И да, вы можете распечатать его, кроме как в конструкторе, потому что конструктор выполняется до ввода значений.Есть разные способы добиться того же. Ниже приведены некоторые часто используемые способы весной:
Использование PropertyPlaceholderConfigurer
Использование PropertySource
Использование ResourceBundleMessageSource
Использование PropertiesFactoryBean
и многое другое ........................
Предполагая, что
ds.type
это ключевой момент в вашем файле свойств.С помощью
PropertyPlaceholderConfigurer
регистр
PropertyPlaceholderConfigurer
bean-или
или
После регистрации
PropertySourcesPlaceholderConfigurer
вы можете получить доступ к значению -С помощью
PropertySource
В последней весенней версии вам не нужно регистрироваться
PropertyPlaceHolderConfigurer
с@PropertySource
, я нашел хорошую ссылку , чтобы понять версию compatibility-С помощью
ResourceBundleMessageSource
Зарегистрировать Bean-
Доступ к стоимости-
или
С помощью
PropertiesFactoryBean
Зарегистрировать Bean-
Экземпляр свойств провода в ваш класс -
источник
В классе конфигурации
источник
app.properties
при тестировании в рабочей среде ? Другими словами, будет ли часть вашего процесса развертывания заменятьapp.properties
производственные значения?Вот дополнительный ответ, который также очень помог мне понять, как это работает: http://www.javacodegeeks.com/2013/07/spring-bean-and-propertyplaceholderconfigurer.html
источник
PropertySourcesPlaceholderConfigurer
Bean с помощью@PropertySource
@PropertySource
.Если вам нужно вручную прочитать файл свойств без использования @Value.
Спасибо Локешу Гупте за хорошо написанную страницу: Блог
источник
Вам нужно поместить bean-компонент PropertyPlaceholderConfigurer в контекст вашего приложения и установить его свойство местоположения.
Подробности здесь: http://www.zparacha.com/how-to-read-properties-file-in-spring/
Возможно, вам придется немного изменить файл свойств, чтобы это работало.
Надеюсь, поможет.
источник
Другой способ - использовать ResourceBundle . Обычно вы получаете пакет, используя его имя без ".properties"
И вы восстанавливаете любое значение, используя это:
источник
источник
Я рекомендую прочитать эту ссылку https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html из документации SpringBoot о внедрении внешних конфигураций. Они говорили не только о получении из файла свойств, но также о файлах YAML и даже JSON. Я нашел это полезным. Я надеюсь, что вы тоже.
источник
Мне нужен служебный класс, которым не управляет spring, поэтому никаких аннотаций Spring, таких как
@Component
и@Configuration
т. Д., Но я хотел, чтобы класс читал изapplication.properties
Мне удалось заставить его работать, заставив класс знать о контексте Spring, следовательно, он знает
Environment
и, следовательно,environment.getProperty()
работает, как ожидалось.Чтобы быть точным, у меня есть:
application.properties
Utils.java
ApplicationContextProvider.java (см. Spring получить текущий ApplicationContext )
источник