Package org.springframework.web.servlet.view.freemarker

# 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`, `org.springframework.web.context.ServletContextAware`, `FreeMarkerConfig`

public class FreeMarkerConfigurer extends org.springframework.ui.freemarker.FreeMarkerConfigurationFactory implements FreeMarkerConfig, org.springframework.beans.factory.InitializingBean, org.springframework.context.ResourceLoaderAware, org.springframework.web.context.ServletContextAware
Bean to configure FreeMarker for web usage, via the "configLocation", "freemarkerSettings", 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 pre-configured FreeMarker `Configuration` instance 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.33 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
`FreeMarkerConfigurer()`

## Method Summary

Modifier and Type
Method
Description
`void`
`afterPropertiesSet()`
Initialize FreeMarkerConfigurationFactory's `Configuration` if not overridden by a preconfigured FreeMarker `Configuration`.
`freemarker.template.Configuration`
`getConfiguration()`
Return the `Configuration` object wrapped by this bean.
`freemarker.ext.jakarta.jsp.TaglibFactory`
`getTaglibFactory()`
Return the TaglibFactory 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 — for example, a shared one for web and email usage.
`void`
`setServletContext(ServletContext servletContext)`
Initialize the `TaglibFactory` for the given ServletContext.

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

`createConfiguration, getAggregateTemplateLoader, getResourceLoader, getTemplateLoaderForPath, isPreferFileSystemAccess, newConfiguration, postProcessConfiguration, setConfigLocation, setDefaultCharset, 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 — for example, a shared one for web and email usage.

If this is not set, FreeMarkerConfigurationFactory's properties (inherited by this class) have to be specified.

See Also:
  - `FreeMarkerConfigurationFactoryBean`

### setServletContext

public void setServletContext(ServletContext servletContext)
Initialize the `TaglibFactory` for the given ServletContext.

Specified by:
  `setServletContext` in interface `org.springframework.web.context.ServletContextAware`

### afterPropertiesSet

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

Indirectly 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:
  - `FreeMarkerConfigurationFactory.createConfiguration()`
  - `setConfiguration(freemarker.template.Configuration)`
  - `postProcessTemplateLoaders(List)`

### 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`

### getTaglibFactory

public freemarker.ext.jakarta.jsp.TaglibFactory getTaglibFactory()
Return the TaglibFactory object wrapped by this bean.

Specified by:
  `getTaglibFactory` in interface `FreeMarkerConfig`