Я создал множество обычных небольших контейнеров bean -definition (@Configuration
), которые я использую для быстрого создания приложений с помощью Spring Boot like:
@Import({
FreemarkerViewResolver.class, // registers freemarker that auto appends <#escape etc.
ConfigurationFromPropertiesFile.class, // loads conf/configuration.properties
UtfContentTypeResponse.class, // sets proper Content-language and Content-type
LocaleResolverWithLanguageSwitchController // Locale resolver + switch controller
);
class MySpringBootApp ...
Например, один из таких @Configuration
может настроить хранилище сеансов для куки файла locale с веб-контроллером для переключения на выбранный язык и т.д.
Они очень полезны для работы и повторного использования, но было бы здорово сделать его параметризованным, что могло бы позволить намного больше повторного использования. Я имею в виду что-то вроде:
Псевдокод:
@Imports( imports = {
@FreemarkerViewResolver( escapeHtml = true, autoIncludeSpringMacros = true),
@ConfigurationFromProperties( path = "conf/configuration.properties" ),
@ContentTypeResponse( encoding = "UTF-8" ),
@LocaleResolver( switchLocaleUrl = "/locale/{loc}", defaultLocale = "en"
})
Итак, я в основном имею в виду "настраиваемый @Configurations
". Каким будет лучший способ сделать конфигурацию таким образом?
Может быть, что-то вроде этого (опять-таки, псевдо-код):
@Configuration
public class MyAppConfiguration {
@Configuration
public FreemarkerConfiguration freemarkerConfiguration() {
return FreemarkerConfigurationBuilder.withEscpeAutoAppend();
}
@Configuration
public ConfigurationFromPropertiesFile conf() {
return ConfigurationFromPropertiesFile.fromPath("...");
}
@Configuration
public LocaleResolverConfigurator loc() {
return LocaleResolverConfigurator.trackedInCookie().withDefaultLocale("en").withSwitchUrl("/switchlocale/{loc}");
}