2016-07-05 7 views
0

Приложение My Spring Boot (1.3.5) использует внешнюю конфигурацию с использованием файла application.properties. Наряду с этим, я в настоящее время есть класс конфигурации, например:Spring Boot - окончательная настройка конфигурации

@Configuration 
MyConfig { 
    @Value("${prop}") 
    private String prop; 

    // getters 
} 

мне интересно, если есть способ сделать prop окончательным. В идеале я бы хотел публично получить доступ к своим свойствам конфигурации; например myConfig.prop. Я хочу сделать все недвижимость общественностью и final; однако я считаю, что классы конфигурации сначала создаются через пустой конструктор перед загрузкой свойств. Есть ли альтернативный подход?

+0

Почему? В чем вы обеспокоены временем выполнения? – duffymo

+0

Это не проблема времени выполнения; скорее, чтобы избежать непреднамеренных изменений другими разработчиками конфигурации. – user1491636

ответ

0

Вы можете ввести значения конфигурации в конструктор и назначить поле final.

@Configuration 
class MyConfig { 
    private String final prop; 
    public MyConfig(@Value("${prop}") String prop){ 
    this.prop = prop; 
    } 

} 
+0

Да, что работает. Что делать, если у меня много настроек? Думаю, это стимул разбить его на более мелкие классы конфигурации? – user1491636

+0

@ user1491636 Да, вы можете это сделать, DBConfig и SMTPConfig могут перейти в разные классы конфигурации –

+0

Итак, после внесения этого изменения я получаю исключение запуска: 'Не найден конструктор по умолчанию;' – user1491636