[施工中]Spring Boot集成 Beetl以及Hibernate(甚至是POI)不完全指北

SpringBoot 工具集成

本文仅做集成spring boot主要工具记录。

前言

因为工作问题导致之前ECS服务器搭建后一直没有后续,在采用通用模板后工作量有适度减轻,因工作业务功能模块需要,本篇文章进度应该会更新至excel表格导出。

如有不足,希望大家批评指正。

一、Beetl

1.1 Beetl与其他知名模板引擎对比

Beetl(Bee Template Language)是一种功能强大,性能良好的模板引擎。在官网首页他们非常不要脸的放出了Beetl和其他目前知名模板引擎的性能对比图。
在这里插入图片描述
至于Beetl与主流模板引擎Thmeleaf的代码及性能对比,在知乎有专贴进行讨论 beetl和thymeleaf 性能比较和怎样分析? 我还没看完,由于公司框架目前是集成Beetl,所以本文档也以Beetl为例。

1.2 SpringBoot与Beetl集成

依照惯例,我们首先在pom.xml中添加如下坐标。

	<dependency>
	        <groupId>com.ibeetl</groupId>
	        <artifactId>beetl</artifactId>
	        <version>2.9.3</version>
	</dependency>

默认情况下,beetl会自动加载位于默认的配置文件,(位于/org/beetl/core/beetl-default.properties),作为初次使用新手,需要关注定界符的配置,以及模板字符集的配置就可以了

//定界符
DELIMITER_PLACEHOLDER_START=${
DELIMITER_PLACEHOLDER_END=}
DELIMITER_STATEMENT_START=<%
DELIMITER_STATEMENT_END=%>

//模板字符集
TEMPLATE_CHARSET = UTF-8

starter 自动处理以btl结尾的视图,模板根目录是Spring Boot默认的templates目录。如下配置可以修改beetl部分属性。
1.beetl-beetlsql.dev,默认为true,即自动检查模板变化
2.beetl.enabled 默认为true,集成beetl。
3.beetl.suffix 默认为btl,表示只处理视图后缀为btl的模板,比如controller里代码是“return /common/index.btl”,则能被Beetl处理,你写成"return /common/index",或者"/common/index.html",都会出现404错误。

Starter可以实现BeetlTemplateCustomize来定制Beetl

@Configuration
public MyConfig{
  @Bean
  public BeetlTemplateCustomize beetlTemplateCustomize(){
    return new BeetlTemplateCustomize(){
      public void customize(GroupTemplate groupTemplate){

      }
    };
  }
}

使用Starter来配置已经够用,如果你想自己配置模板引擎, 通过java config来配置 beetl需要的BeetlGroupUtilConfiguration,和 BeetlSpringViewResolver,参考代码如下

@Configuration
public class BeetlConf {

        @Value("${beetl.templatesPath}") String templatesPath;//模板根目录 ,比如 "templates"
        @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;
        }

 }

值得注意的是,beetlConf.java文件的地址是需要与starter同级而不是子级的,也就是放置在主目录底下:
在这里插入图片描述
最后在application.properties中对Beetl的模板路径进行配置,在项目启动后会自动注入到BeetlConf.java中:

#模板路径
beetl.templatesPath=beetls

这样我们的页面就可以放置在项目/resources/beetls/路径下。

1.3 Beetl使用

在项目下一级目录中我们建立一个文件夹,例如com.yd.test.beetltset,粘贴进如下代码:

package com.yangdong.score.base;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/student")
public class StudentBaseInformation {
	
	@RequestMapping("/base")
	public String studentBase() {
		return "studentbase.html"; //由于我们并没有在模板中设置html扫描的后缀,所以我们还是需要加上.html进行识别,否则会出现403错误。
	}
}

这样,在项目启动后。我们输入 localhost:8081/student/base就可以访问到我们想要访问的页面
在这里插入图片描述
这样集成Beetl的具体步骤就如图所示,至于Beetl的使用细节则会专门写一篇文档进行介绍。

二、Hibernate

2.1 MyBatis与Hibernate区别与对比

因为相对于MyBatis,Hibernate更加的复杂,沉重。它有QBC,HQL,SQL三种查询方式,这也就意味着我们在sql语句优化时会遇到一定的困难,还要它的抽取策略,处理表的关系时也是尤为复杂。一般的中小型项目中,MyBatis的性能足以应付,所以现在中小公司大多数都会采用MyBatis这种技术来进行持久层的开发。

2.2 Hibernate集成(施工中)

周一晚上继续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值