第一步,当然是添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
添加好依赖后
springboot会做自动化依赖配置
基本来说不用再做任何配置就可以使用freemarker了。
当然,如果要了解他是如何运行的,还请往下面看
依赖后会有这么一个类
FreeMarkerAutoConfiguration
里面有这么一个注解
@ConditionalOnClass({ freemarker.template.Configuration.class, FreeMarkerConfigurationFactory.class })
大致可以理解为如果咱们有freemarker的依赖项那么下面的配置才会生效
往下看
还有这么一个注解
@Import({ FreeMarkerServletWebConfiguration.class, FreeMarkerReactiveWebConfiguration.class,
FreeMarkerNonWebConfiguration.class })
看名字大致知道
- 为web环境下的freemarker配置
- 第二个为Reactive web环境下的freemarker配置
- 第三个为javaSE环境下的freemarker配置
那么本文以第一个环境配置为例子
进去后会发现
@Bean
@ConditionalOnMissingBean(name = "freeMarkerViewResolver")
@ConditionalOnProperty(name = "spring.freemarker.enabled", matchIfMissing = true)
public FreeMarkerViewResolver freeMarkerViewResolver() {
FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
getProperties().applyToMvcViewResolver(resolver);
return resolver;
}
会有这么一个视图解析器
这也是freemarker的核心配置
不知大家发现没有,这里有这么一个注解
@ConditionalOnMissingBean(name = "freeMarkerViewResolver")
简单来说就是 如果你已经自己定义了一个名字为’freeMarkerViewResolver’的视图解析器
那么spring的就不会生效 没有则反之
这也体现了spring“约定大于配置”的理念
即:如果你配置了那么就用你的,如果你没配置就用spring的
这在spring大多数源码里大家都可以看到
这里不做过多赘述
最后一个
freemarker默认的访问路径是在根目录resources下的templates目录里
在FreeMarkerAutoConfiguration类里有这么一个注解
@EnableConfigurationProperties(FreeMarkerProperties.class)
点进去会发现
@ConfigurationProperties(prefix = "spring.freemarker")
有这么一个注解
类型安全的属性注入
前缀为spring.freemarker
下面有这么几个配置项
public static final String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/";
public static final String DEFAULT_PREFIX = "";
public static final String DEFAULT_SUFFIX = ".ftl";
以第一个为例
这个就是freemarker默认的访问路径
在springboot的application.properties里就可以进行配置
spring.freemarker.template-loader-path=你自己的路径