Данный механизм позволяет работать со свойствами приложения через методы Java-интерфейсов, что дает следующие преимущества:
-
типизированность - прикладной код работает с нужными типами (String, Boolean, Integer и пр.), а не только со строками
-
в прикладном коде вместо строковых идентификаторов свойств используются методы интерфейсов, имена которых подсказываются средой разработки
Пример получения значения таймаута транзакции в блоке Middleware:
@Inject private ServerConfig serverConfig; public void doSomething() { int timeout = serverConfig.getDefaultQueryTimeoutSec(); ... }
При невозможности инжекции можно получить ссылку на конфигурационный интерфейс через Configuration:
int timeout = AppBeans.get(Configuration.class) .getConfig(ServerConfig.class) .getDefaultQueryTimeoutSec();
Конфигурационные интерфейсы не являются нормальными бинами Spring, не пытайтесь получить их через AppBeans.get()
- только непосредственной инжекцией самого интерфейса или через Configuration.getConfig()
.