beetl和springboot结合实现

Springboot目前功能非常强大,在这篇文章里详细的记录一下springboot集成使用beetl模板的方法。

项目搭建

创建一个简单的springboot项目

在pom文件中引入邮件 beetl-framework-starter的依赖

<dependency>
	<groupId>com.ibeetl</groupId>
	<artifactId>beetl-framework-starter</artifactId>
	<version>1.1.81.RELEASE</version>
</dependency>

在templates中创建模板文件index.btl

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width">
</head>

<body>
hello ${beetl}
</body>

创建controller

@Controller
public class IndexController {

    @GetMapping("/")
    public String index(HttpServletRequest request){
        request.setAttribute("beetl", "telangel");
        return "index.btl";
    }
}

至此,beetl与springboot的简单结合就完成了,在浏览器中访问,就可以通过模板渲染相应的数据。

beetl-framework-starter 模板的根目录默认为springboot的templates目录,默认处理以btl结尾的视图。

如果需要修改,可以在springboot的配置文件application.properties配置。

配置beetl的参数

# 禁用beetlsql  默认为true 集成beetlsql
beetlsql.enabled=false
# 禁用beetl  默认为true,集成beetl模板
beetl.enabled=false
# 自动检查模板变化, 默认为true
beetl-beetlsql.dev = true
# 默认为btl,表示只处理视图后缀为btl的模板,这里如果不配置,则只能识别btl结尾的模板文件
beetl.suffix = btl

定制beetl

  • 实现BeetlTemplateCustomize来定制Beetl
    @Configuration
    public class MyBeetlConfig {
    
        @Bean
        public BeetlTemplateCustomize beetlTemplateCustomize(){
            return (groupTemplate) -> {
                Map<String, Object> map = new HashMap<>();
                map.put("user", "lid");
                groupTemplate.setSharedVars(map);
            };
        }
    }
    
  • 配置自己的模板引擎

    通常情况下,beetl starter的配置已经足够使用了,如果需要自己配置模板引擎,需要配置

    BeetlGroupUtilConfiguration,和 BeetlSpringViewResolver,配置代码参考

     @Bean(name = "beetlConfig")
     public BeetlGroupUtilConfiguration getBeetlGroupUtilConfiguration() {
         BeetlGroupUtilConfiguration beetlGroupUtilConfiguration = new BeetlGroupUtilConfiguration();
         //获取Spring Boot 的ClassLoader
         ClassLoader loader = Thread.currentThread().getContextClassLoader();
         if(loader==null){
                loader = BeetlConf.class.getClassLoader();
         }
         beetlGroupUtilConfiguration.setConfigProperties(extProperties);//额外的配置,可以覆盖默认配置,一般不需要
         ClasspathResourceLoader cploder = new ClasspathResourceLoader(loader,
                    templatesPath);
         beetlGroupUtilConfiguration.setResourceLoader(cploder);
         beetlGroupUtilConfiguration.init();
         //如果使用了优化编译器,涉及到字节码操作,需要添加ClassLoader
         beetlGroupUtilConfiguration.getGroupTemplate().setClassLoader(loader);
            return beetlGroupUtilConfiguration;
         }
    
            @Bean(name = "beetlViewResolver")
            public BeetlSpringViewResolver getBeetlSpringViewResolver(@Qualifier("beetlConfig") BeetlGroupUtilConfiguration beetlGroupUtilConfiguration) {
                    BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver();
                    beetlSpringViewResolver.setContentType("text/html;charset=UTF-8");
                    beetlSpringViewResolver.setOrder(0);
                    beetlSpringViewResolver.setConfig(beetlGroupUtilConfiguration);
                    return beetlSpringViewResolver;
            }

转载需保留链接来源:软件玩家 » beetl和springboot结合实现

赞 (0)