Created
July 3, 2017 06:48
-
-
Save circlee/329a18e6c1bd4077b7ad450f343315f7 to your computer and use it in GitHub Desktop.
Thymeleaf TemplateEngine component
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.IOException; | |
import java.io.InputStream; | |
import org.springframework.context.ApplicationContext; | |
import org.springframework.context.annotation.Bean; | |
import org.springframework.core.io.Resource; | |
import org.springframework.stereotype.Component; | |
import org.thymeleaf.TemplateEngine; | |
import org.thymeleaf.TemplateProcessingParameters; | |
import org.thymeleaf.resourceresolver.IResourceResolver; | |
import org.thymeleaf.templateresolver.TemplateResolver; | |
import org.thymeleaf.util.Validate; | |
import lombok.extern.slf4j.Slf4j; | |
@Component | |
public @Slf4j class CoreConfig { | |
@Bean | |
public TemplateEngine getThymeleafTemplateEngind(ApplicationContext context){ | |
// thymeleaf-spring4 dependency 설정 시 , viewResolver에 영향 | |
// IResourceResolver만 SpringResourceResolver참고하여 생성 | |
IResourceResolver resourceResolver = new IResourceResolver() { | |
@Override | |
public InputStream getResourceAsStream( | |
TemplateProcessingParameters templateProcessingParameters, | |
String resourceName) { | |
Validate.notNull(resourceName, "Resource name cannot be null"); | |
Validate.notNull(context, | |
"ApplicationContext has not been initialized in resource resolver. TemplateResolver or " + | |
"ResourceResolver might not have been correctly configured by the Spring Application Context."); | |
try { | |
final Resource resource = context.getResource(resourceName); | |
if (resource == null) { | |
return null; | |
} | |
return resource.getInputStream(); | |
} catch (final IOException e) { | |
if (log.isDebugEnabled()) { | |
if (log.isTraceEnabled()) { | |
log.trace( | |
String.format( | |
"[THYMELEAF][%s][%s] Resource \"%s\" could not be resolved. This can be normal as " + | |
"maybe this resource is not intended to be resolved by this resolver. " + | |
"Exception is provided for tracing purposes: ", | |
TemplateEngine.threadIndex(), templateProcessingParameters.getTemplateName(), | |
resourceName), | |
e); | |
} else { | |
log.debug( | |
String.format( | |
"[THYMELEAF][%s][%s] Resource \"%s\" could not be resolved. This can be normal as " + | |
"maybe this resource is not intended to be resolved by this resolver. " + | |
"Exception message is provided: %s: %s", | |
TemplateEngine.threadIndex(), templateProcessingParameters.getTemplateName(), | |
resourceName, e.getClass().getName(), e.getMessage())); | |
} | |
} | |
return null; | |
} | |
} | |
@Override | |
public String getName() { | |
// TODO Auto-generated method stub | |
return "CoreConfig IResourceResolver Impl"; | |
} | |
}; | |
TemplateResolver templateResolver = new TemplateResolver(); | |
templateResolver.setResourceResolver(resourceResolver); | |
templateResolver.setCharacterEncoding("UTF-8"); | |
templateResolver.setPrefix("classpath:/templates/"); | |
templateResolver.setSuffix(".html"); | |
TemplateEngine engine = new TemplateEngine(); | |
engine.setTemplateResolver(templateResolver); | |
return engine; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment