package com.github.yingzhuo.spring.auto.jmustache; import com.samskivert.mustache.Mustache; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; @Order(Ordered.HIGHEST_PRECEDENCE) @EnableConfigurationProperties(ConfigBean.class) @ConditionalOnClass(Mustache.class) @ConditionalOnProperty(name = "spring.auto.jmustache.enabled", havingValue = "true", matchIfMissing = false) public class JmustacheTemplateConfiguration { private static final Logger LOGGER = LoggerFactory.getLogger(JmustacheTemplateConfiguration.class); @Autowired private ConfigBean configBean; public JmustacheTemplateConfiguration() { LOGGER.debug("spring-auto: '{}' enabled.", JmustacheTemplateConfiguration.class.getSimpleName()); } @Bean @ConditionalOnMissingBean(value = JmustacheTemplate.class) public JmustacheTemplate jmustacheTemplate() { JmustacheTemplate bean = new JmustacheTemplate(); bean.setEncoding(configBean.getEncoding()); bean.setPrefix(configBean.getPrefix()); bean.setSuffix(configBean.getSuffix()); return bean; } }