3.2.9.3.1. Использование
Для создания конфигурационного интерфейса необходимо:
-  
Создать интерфейс, унаследованный от
com.haulmont.cuba.core.config.Config(не путать с классом сущностиcom.haulmont.cuba.core.entity.Config) -  
Добавить интерфейсу аннотацию
@Sourceдля указания источника (способа хранения) параметров:-  
SourceType.SYSTEM- значение свойства будет взято из системных свойств данной JVM, т.е. методомSystem.getProperty(). -  
SourceType.APP- значение свойства будет взято из файловapp.properties. -  
SourceType.DATABASE- значение свойства будет взято из базы данных. 
 -  
 -  
Создать методы доступа к свойству (getter / setter). Если значение свойства не предполагается изменять из кода приложения, метод доступа на запись не нужен. Тип, вовращаемый методом доступа на чтение, определяет тип свойства. Возможные типы рассмотрены ниже.
 -  
Добавить методу доступа на чтение аннотацию
@Property, определяющую имя свойства. -  
Опционально аннотацию
@Sourceможно задать для отдельного свойства в интерфейсе, если его источник отличается от заданного для всего интерфейса. -  
Если аннотация
@Sourceимеет значениеSourceType.DATABASE, то свойство можно редактировать на экране Administration > Application Properties. Если вы хотите, чтобы значение свойства было замаскировано, задайте на свойстве аннотацию@Secret. В этом случае на данном экране будет использован компонент PasswordField вместо обычного текстового поля. 
|  
       Конфигурационный интерфейс должен быть определен внутри корневого пакета приложения (или во внутренних пакетах корневого пакета).  |  
    
Например:
@Source(type = SourceType.DATABASE)
public interface SalesConfig extends Config {
    @Property("sales.companyName")
    String getCompanyName();
    @Property("sales.ftpPassword")
    @Secret
    String getFtpPassword();
} 
  Создавать класс реализации конфигурационного интерфейса не нужно - при получении ссылки на интерфейс инжекцией или через Configuration будет автоматически создан необходимый прокси-объект.