<!DOCTYPE html><html><head><title>spring boot 中3步集成beetl</title><meta charset='utf-8'><link href='https://dn-maxiang.qbox.me/res-min/themes/marxico.css' rel='stylesheet'><style></style></head><body><div id='preview-contents' class='note-content'>
<h1 id="spring-boot-中3步集成beetl">spring boot 中3步集成beetl</h1>
<blockquote>
<p>因为项目要使用spring boot 和 beetl,官方文档写的也不是很详细,网上找了几篇文章写法各异,有的ide中好用,发布成jar就找不到模版了。折腾了快3个小时,终于搞定了。关键就是beetl的classloader要配置成springbot的。并且视图不要配置前后缀。集成步骤如下:</p>
</blockquote>
<ol start="1"><li rel="1">引入beetl依赖。注意引入的artifactId为 <strong>beetl-framework-starter</strong>。这个是spring boot的版本,不要引入成普通版本哦。</li>
</ol>
<pre class="prettyprint hljs-dark"><code class="hljs xml"><div class="hljs-line"> <span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
</div><div class="hljs-line"> <span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>com.ibeetl<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
</div><div class="hljs-line"> <span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>beetl-framework-starter<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
</div><div class="hljs-line"> <span class="hljs-tag"><<span class="hljs-name">version</span>></span>1.1.17.RELEASE<span class="hljs-tag"></<span class="hljs-name">version</span>></span>
</div><div class="hljs-line"> <span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
</div></code></pre>
<ol start="2"><li rel="2"><p>在resources目录下新建beetl.properties。可以在这里修改beetl的默认配置。如果不修改默认配置,就建立一个空文件。</p></li>
<li rel="3"><p>在springboot的启动类上添加如下代码。</p></li>
</ol>
<pre class="prettyprint hljs-dark"><code class="hljs kotlin"><div class="hljs-line"><span class="hljs-meta">@Bean(initMethod = <span class="hljs-meta-string">"init"</span>, name = <span class="hljs-meta-string">"beetlConfig"</span>)</span>
</div><div class="hljs-line"> <span class="hljs-keyword">public</span> BeetlGroupUtilConfiguration getBeetlGroupUtilConfiguration() {
</div><div class="hljs-line"> BeetlGroupUtilConfiguration beetlGroupUtilConfiguration = new BeetlGroupUtilConfiguration();
</div><div class="hljs-line"> <span class="hljs-comment">//获取Spring Boot 的ClassLoader</span>
</div><div class="hljs-line"> ClassLoader loader = Thread.currentThread().getContextClassLoader();
</div><div class="hljs-line"> <span class="hljs-keyword">if</span>(loader==<span class="hljs-literal">null</span>){
</div><div class="hljs-line"> loader = SpringBootApplication.<span class="hljs-keyword">class</span>.getClassLoader();
</div><div class="hljs-line"> }
</div><div class="hljs-line"> <span class="hljs-keyword">try</span> {
</div><div class="hljs-line"> beetlGroupUtilConfiguration.setConfigProperties(PropertiesLoaderUtils.loadAllProperties(<span class="hljs-string">"beetl.properties"</span>));
</div><div class="hljs-line"> } <span class="hljs-keyword">catch</span> (IOException e) {
</div><div class="hljs-line"> e.printStackTrace();
</div><div class="hljs-line"> }
</div><div class="hljs-line"> ClasspathResourceLoader cploder = new ClasspathResourceLoader(loader,<span class="hljs-string">"templates"</span>);
</div><div class="hljs-line"> beetlGroupUtilConfiguration.setResourceLoader(cploder);
</div><div class="hljs-line"> beetlGroupUtilConfiguration.init();
</div><div class="hljs-line"> <span class="hljs-comment">//如果使用了优化编译器,涉及到字节码操作,需要添加ClassLoader</span>
</div><div class="hljs-line"> GroupTemplate groupTemplate = beetlGroupUtilConfiguration.getGroupTemplate();
</div><div class="hljs-line"> groupTemplate.setClassLoader(loader);
</div><div class="hljs-line"> <span class="hljs-keyword">return</span> beetlGroupUtilConfiguration;
</div><div class="hljs-line"> }
</div><div class="hljs-line">
</div><div class="hljs-line"> <span class="hljs-meta">@Bean(name = <span class="hljs-meta-string">"beetlViewResolver"</span>)</span>
</div><div class="hljs-line"> <span class="hljs-keyword">public</span> BeetlSpringViewResolver getBeetlSpringViewResolver(<span class="hljs-meta">@Qualifier(<span class="hljs-meta-string">"beetlConfig"</span>)</span> BeetlGroupUtilConfiguration beetlGroupUtilConfiguration) {
</div><div class="hljs-line"> BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver();
</div><div class="hljs-line"> beetlSpringViewResolver.setContentType(<span class="hljs-string">"text/html;charset=UTF-8"</span>);
</div><div class="hljs-line"> beetlSpringViewResolver.setOrder(<span class="hljs-number">0</span>);
</div><div class="hljs-line"> beetlSpringViewResolver.setConfig(beetlGroupUtilConfiguration);
</div><div class="hljs-line"> <span class="hljs-keyword">return</span> beetlSpringViewResolver;
</div><div class="hljs-line"> }
</div></code></pre>
<p>注意 getBeetlSpringViewResolver方法中,<strong>不要</strong>设置视图的前缀和后缀,否则可能会找不到模版。</p>
<pre class="prettyprint hljs-dark"><code class="hljs less"><div class="hljs-line"> <span class="hljs-comment">//不需要配置</span>
</div><div class="hljs-line"> <span class="hljs-selector-tag">beetlSpringViewResolver</span><span class="hljs-selector-class">.setPrefix</span>(<span class="hljs-string">"/xxx"</span>);
</div><div class="hljs-line"> <span class="hljs-selector-tag">beetlSpringViewResolver</span><span class="hljs-selector-class">.setSuffix</span>(<span class="hljs-string">"html"</span>);
</div></code></pre>
<ol start="4"><li rel="4">使用 <br>
controller代码,跳转页面时,因为没有配置视图的前缀和后缀,所以return的字符串要写全如下。</li>
</ol>
<pre class="prettyprint hljs-dark"><code class="hljs cs"><div class="hljs-line"><span class="hljs-comment">/***
</span></div><div class="hljs-line"> * 欢迎页面
</div><div class="hljs-line"> */
</div><div class="hljs-line">@RequestMapping(<span class="hljs-keyword">value</span> = <span class="hljs-string">"/admin/welcome"</span>,method = RequestMethod.GET)
</div><div class="hljs-line"><span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">welcome</span>(<span class="hljs-params"></span>) </span>{
</div><div class="hljs-line"> <span class="hljs-keyword">return</span> <span class="hljs-string">"/admin/"</span> + getTemplateName() + <span class="hljs-string">"/welcome.html"</span>;
</div><div class="hljs-line">}
</div><div class="hljs-line">
</div></code></pre>
<p>模版位置</p>
<p><img longdesc="./1509697131096.png" alt="Alt text" title="" type="image/png" src="https://img-blog.csdnimg.cn/2022010612562574843.png" class=""></p></div></body></html>