English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Подробное описание чтения и использования файла свойств properties в Spring

Подробное описание чтения и использования файла свойств properties в Spring

В реальных проектах, обычно некоторые конфигурируемые пользовательские данные размещаются в файле свойств (например, информация о подключении к базе данных, настройки почтовой отправки и т.д.), что便于 единой конфигурации управления. В примере необходимые данные свойств размещены в файле свойств /WEB-INF/configInfo.properties.

Некоторые конфигурационные данные (почтовые настройки):

# почтовые настройки отправки
email.host = smtp.163.com
email.port = xxx
email.username = xxx
email.password = xxx
email.sendFrom = [email protected]

При запуске контейнера Spring, используя встроенный bean, загружается информация из файла свойств, в bean.xml добавить следующее:

Код XML

<!-- Лоадер свойств spring, загружает свойства из файла properties -->
 <bean id="propertyConfigurer"
 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 <property name="location">
  <value>/WEB-INF/configInfo.properties</value>
 </property>
 <property name="fileEncoding" value="utf-8" />
 </bean>

Одним из способов использования после загрузки информации о свойствах является прямое использование значений по ключу в других bean-определениях, например, конфигурация bean почтового отправителя выглядит следующим образом:

Код XML

<!-- Отправка почты -->
 <bean id="mailSender"
 class="org.springframework.mail.javamail.JavaMailSenderImpl">
 <property name="host">
  <value>${email.host}</value>
 </property>
 <property name="port">
  <value>${email.port}</value>
 </property>
 <property name="username">
  <value>${email.username}</value>
 </property>
 <property name="password">
  <value>${email.password}</value>
 </property>
 <property name="javaMailProperties">
  <props>
  <prop key="mail.smtp.auth">true</prop>
  <prop key="sendFrom">${email.sendFrom}</prop>
  </props>
 </property>
 </bean>

Другой способ использования - получение информации о настройках из кода, можно определить javabean: ConfigInfo.java, использовать аннотации для инъекции необходимых данных в код; например, если в файле свойств есть следующая информация, ее можно получить и использовать в коде:

Код Java

#Создание пути сохранения файла
file.savePath = D:/test/
#Создание резервной копии файла, после использования файл будет перемещен в этот каталог
file.backupPath = D:/test bak/

Соответствующий код в ConfigInfo.java:

Код Java

@Component("configInfo")
public class ConfigInfo {
  @Value("${file.savePath}")
  private String fileSavePath;
  @Value("${file.backupPath}")
  private String fileBakPath;
  public String getFileSavePath() {
    return fileSavePath;
  }
  public String getFileBakPath() {
    return fileBakPath;
  }  
}

Для бизнес-класса bo используется аннотация для инъекции объекта ConfigInfo:

Код Java

@Autowired
private ConfigInfo configInfo;

Необходимо добавить компонент сканера в bean.xml, чтобы использовать автоматическую инъекцию через аннотации:

Код XML

<context:component-scan base-package="com.my.model" />

(В указанном пакете model содержится класс ConfigInfo).

Получение соответствующей информации о свойствах через метод get, его преимуществом является удобство использования в коде, недостатком является то, что если в коде нужно использовать новые свойства, необходимо добавить или изменить ConfigInfo.java.

Спасибо за чтение, надеюсь, это поможет вам, спасибо за поддержку нашего сайта!

Основной учебник
Рекомендуем также