2014-10-27 2 views
1

Мне нужно указать несколько шаблонов загрузчика шаблонов для FreeMarker в веб-приложении Spring Boot, но только FreeMarkerAutoConfigurationClass позволяет указать только один путь, используя свойство spring.freemarker.templateLoaderPath, которое использует метод setTemplateLoaderPath в FreeMarkerConfigurationFactory. Однако этот класс позволяет мне установить несколько путей, используя метод setTemplateLoaderPaths. Каков наилучший способ переопределить этот класс автоконфигурации и указать несколько путей загрузчика? Я не очень хорошо понимаю классы конфигурации Spring Java, и мне нужен пример для этого, прежде чем писать код, который мне нужен. Я использую Spring Boot 1.1.2. Заранее спасибо.Как указать несколько шаблонов templateLoaderPath для Freemarker в Spring Boot?

ответ

2

Вам необходимо предоставить свой собственный компонент типа org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer с необходимой конфигурацией. Чтобы сделать это, добавить что-то похожее на следующее к одному из классов конфигурации Java вашего приложения:

@Bean 
public FreeMarkerConfigurer freeMarkerConfigurer() { 
    FreeMarkerConfigurer configurer = new FreeMarkerConfigurer(); 
    configurer.setTemplateLoaderPaths("one", "two", "three"); 

    // Apply further configuration as needed 

    return configurer; 
} 

Update: последних Spring Загрузочные 1.2 моментальных снимков теперь принимают через запятую список для spring.freemarker.templateLoaderPath свойство, позволяющее указать несколько путей без объявления настраиваемого компонента FreeMarkerConfigurer.

+0

Я считаю, что список путей, разделенных запятыми, работает только для свойства 'templateLoaderPaths' (обратите внимание на« s »в конце), а не на' templateLoaderPath'. – ddekany

+0

@ddekany Свойство является единственным. Вот набор для него: https://github.com/spring-projects/spring-boot/blob/v1.3.3.RELEASE/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ freemarker/FreeMarkerProperties.java # L81 –

+0

Вы правы, это 'FreeMarkerConfigurer', который имеет как исключительное, так и множественное свойство. – ddekany

Смежные вопросы