Java学习笔记-Thymeleaf集成SpringBoot

Thymeleaf依赖版本:



    org.springframework.boot
    spring-boot-starter-thymeleaf
    2.7.14

Thymeleaf属性:

@Data
@ConfigurationProperties(prefix = "template.thymeleaf")
public class ThymeleafProperties {

	/** 是否开启 */
	private Boolean enable;

	/** 模版解析 */
	private List templateResolvers;

	@Data
	static class TemplateResolver {
		/** 前缀 */
		private String prefix;
		/** 后缀 */
		private String suffix;
		/** 模版模式 */
		private String templateMode;
		/** 是否开启 */
		private Set resolvablePatterns;
		/** 是否缓存 */
		private Boolean cacheable = false;
		/** 顺序 */
		private Integer order;
	}

}

Thymeleaf自动配置:

@EnableConfigurationProperties({ ThymeleafProperties.class })
@Configuration
public class ThymeleafAutoConfiguration {

	private static final String FILE_PREFIX = "file:";

	@Bean(name = "thymeleafTemplateEngine")
	@ConditionalOnProperty(prefix="template.thymeleaf", name = "enable", havingValue = "true", matchIfMissing = false)
	public SpringWebFluxTemplateEngine thymeleafTemplateEngine(ThymeleafProperties thymeleafProperties) {
		SpringWebFluxTemplateEngine templateEngine = new SpringWebFluxTemplateEngine();
		Set templateResolvers = new HashSet<>();
		if (null == thymeleafProperties || null == thymeleafProperties.getTemplateResolvers()) {
			templateResolvers.add(templateResolver(0, "/templates/", ".html", TemplateMode.HTML,
				new HashSet<>(Arrays.asList("html/*", "*/html/*")), true));
			templateResolvers.add(templateResolver(1, "/templates/", ".xml", TemplateMode.XML,
				new HashSet<>(Arrays.asList("xml/*", "*/xml/*")), true));
			templateResolvers.add(templateResolver(2, "/templates/", ".txt", TemplateMode.TEXT,
				new HashSet<>(Arrays.asList("text/*", "*/text/*")), true));
		} else {
			thymeleafProperties.getTemplateResolvers().forEach(templateResolver -> {
				templateResolvers.add(templateResolver(templateResolver.getOrder(), templateResolver.getPrefix(),
					templateResolver.getSuffix(), TemplateMode.parse(templateResolver.getTemplateMode()),
						templateResolver.getResolvablePatterns(), templateResolver.getCacheable()));
			});
		}
		templateEngine.setTemplateResolvers(templateResolvers);
		return templateEngine;
	}

	@Bean(name = "thymeleafTemplateService")
	@ConditionalOnProperty(prefix="template.thymeleaf", name = "enable", havingValue = "true", matchIfMissing = false)
	public TemplateService thymeleafTemplateService(TemplateEngine thymeleafTemplateEngine) {
		return new ThymeleafTemplateServiceImpl(thymeleafTemplateEngine);
	}

	private ITemplateResolver templateResolver(int order, String prefix, String suffix, TemplateMode templateMode,
			Set resolvablePatterns, boolean cacheable) {
		AbstractConfigurableTemplateResolver templateResolver =
			prefix.startsWith(FILE_PREFIX) ? new FileTemplateResolver() : new ClassLoaderTemplateResolver();
		templateResolver.setOrder(order);
		templateResolver.setPrefix(prefix.startsWith(FILE_PREFIX) ? prefix.substring(FILE_PREFIX.length()) : prefix);
		templateResolver.setSuffix(suffix);
		templateResolver.setTemplateMode(templateMode);
		templateResolver.setResolvablePatterns(resolvablePatterns);
		templateResolver.setCharacterEncoding("UTF-8");
		templateResolver.setCacheable(cacheable);
		return templateResolver;
	}

}

spring.factories配置:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.component.template.config.ThymeleafAutoConfiguration

配置文件配置:

template:
  thymeleaf:
    enable: true
    template-resolvers:
      - prefix: "/template/"
        suffix: ".html"
        templateMode: HTML
        resolvablePatterns:
          - "html/*"
          - "*/html/*"
        cacheable: true
        order: 0
      - prefix: "/template/"
        suffix: ".xml"
        templateMode: XML
        resolvablePatterns: ["xml/*","*/xml/*"]
        cacheable: true
        order: 1
      - prefix: "file:D:/template/"
        suffix: ".html"
        templateMode: HTML
        resolvablePatterns:
          - "html/*"
          - "*/html/*"
        cacheable: true
        order: 2

你可能感兴趣的:(J2EE,java,学习,笔记,thymeleaf,spring,boot)