Class FreeMarkerConfigurer

java.lang.Object
org.springframework.ui.freemarker.FreeMarkerConfigurationFactory
org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.InitializingBean, org.springframework.context.ResourceLoaderAware, FreeMarkerConfig

public class FreeMarkerConfigurer extends org.springframework.ui.freemarker.FreeMarkerConfigurationFactory implements FreeMarkerConfig, org.springframework.beans.factory.InitializingBean, org.springframework.context.ResourceLoaderAware
JavaBean to configure FreeMarker for web usage, via the "configLocation" and/or "freemarkerSettings" and/or "templateLoaderPath" properties. The simplest way to use this class is to specify just a "templateLoaderPath"; you do not need any further configuration then.
 <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
   <property name="templateLoaderPath"><value>/WEB-INF/freemarker/</value></property>
 </bean>
This bean must be included in the application context of any application using Spring's FreeMarkerView for web MVC. It exists purely to configure FreeMarker. It is not meant to be referenced by application components but just internally by FreeMarkerView. Implements FreeMarkerConfig to be found by FreeMarkerView without depending on the bean name of the configurer. Each DispatcherServlet can define its own FreeMarkerConfigurer if desired.

Note that you can also refer to a preconfigured FreeMarker Configuration instance, for example one set up by FreeMarkerConfigurationFactoryBean, via the "configuration" property. This allows to share a FreeMarker Configuration for web and email usage, for example.

This configurer registers a template loader for this package, allowing to reference the "spring.ftl" macro library contained in this package:

 <#import "/spring.ftl" as spring/>
 <@spring.bind "person.age"/>
 age is ${spring.status.value}
Note: Spring's FreeMarker support requires FreeMarker 2.3 or higher.
Since:
03.03.2004
Author:
Darren Davison, Rob Harrop
See Also:
  • FreeMarkerConfigurationFactory.setConfigLocation(org.springframework.core.io.Resource)
  • FreeMarkerConfigurationFactory.setFreemarkerSettings(java.util.Properties)
  • FreeMarkerConfigurationFactory.setTemplateLoaderPath(java.lang.String)
  • setConfiguration(freemarker.template.Configuration)
  • FreeMarkerConfigurationFactoryBean
  • FreeMarkerView
  • Field Summary

    Fields inherited from class org.springframework.ui.freemarker.FreeMarkerConfigurationFactory

    logger
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Initialize FreeMarkerConfigurationFactory's Configuration if not overridden by a preconfigured FreeMarker Configuration.
    freemarker.template.Configuration
    Return the Configuration object wrapped by this bean.
    protected void
    postProcessTemplateLoaders(List<freemarker.cache.TemplateLoader> templateLoaders)
    This implementation registers an additional ClassTemplateLoader for the Spring-provided macros, added to the end of the list.
    void
    setConfiguration(freemarker.template.Configuration configuration)
    Set a preconfigured Configuration to use for the FreeMarker web config, e.g.

    Methods inherited from class org.springframework.ui.freemarker.FreeMarkerConfigurationFactory

    createConfiguration, getAggregateTemplateLoader, getResourceLoader, getTemplateLoaderForPath, isPreferFileSystemAccess, newConfiguration, postProcessConfiguration, setConfigLocation, setDefaultEncoding, setFreemarkerSettings, setFreemarkerVariables, setPostTemplateLoaders, setPreferFileSystemAccess, setPreTemplateLoaders, setResourceLoader, setTemplateLoaderPath, setTemplateLoaderPaths

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.springframework.context.ResourceLoaderAware

    setResourceLoader
  • Constructor Details

    • FreeMarkerConfigurer

      public FreeMarkerConfigurer()
  • Method Details

    • setConfiguration

      public void setConfiguration(freemarker.template.Configuration configuration)
      Set a preconfigured Configuration to use for the FreeMarker web config, e.g. a shared one for web and email usage, set up via FreeMarkerConfigurationFactoryBean. If this is not set, FreeMarkerConfigurationFactory's properties (inherited by this class) have to be specified.
      See Also:
      • FreeMarkerConfigurationFactoryBean
    • afterPropertiesSet

      public void afterPropertiesSet() throws IOException, freemarker.template.TemplateException
      Initialize FreeMarkerConfigurationFactory's Configuration if not overridden by a preconfigured FreeMarker Configuration.

      Sets up a ClassTemplateLoader to use for loading Spring macros.

      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      Throws:
      IOException
      freemarker.template.TemplateException
      See Also:
    • postProcessTemplateLoaders

      protected void postProcessTemplateLoaders(List<freemarker.cache.TemplateLoader> templateLoaders)
      This implementation registers an additional ClassTemplateLoader for the Spring-provided macros, added to the end of the list.
      Overrides:
      postProcessTemplateLoaders in class org.springframework.ui.freemarker.FreeMarkerConfigurationFactory
    • getConfiguration

      public freemarker.template.Configuration getConfiguration()
      Return the Configuration object wrapped by this bean.
      Specified by:
      getConfiguration in interface FreeMarkerConfig
      Returns:
      the FreeMarker Configuration