Spring Boot は freemarker テンプレート エンジンを統合します

この記事は「Golden Stone Project. Share 60,000 Cash Prize」に参加しています。

序文

J2EE の分野には、テンプレート エンジン、プロセス エンジン、検索エンジン、ルール エンジン、およびレポート エンジンという 5 つの主要なエンジンが含まれます。各エンジンは特定の問題を解決できます.テンプレートエンジンはユーザーインターフェースとビジネスデータの分離を解決します.プロセスエンジンは特定のプロセスに従ってビジネスを実行する問題を解決します.違いは、さまざまなビジネス決定を分離する必要があることです.コードから。これらのエンジン技術については、以降の記事で重点的に説明します。

画像.png

この記事では、テンプレート エンジンについて説明します. J2EE で一般的に使用されるテンプレート エンジンには、Velocity、Freemark、Thymeleaf などがあります。

序章

FreeMarker は、テンプレートに基づいてテキスト出力を生成する Java 言語で書かれたテンプレート エンジンです。ビジネス データとユーザー インターフェイスの表示を分離し、ビューのレンダリングに集中することで、効率が向上します。

適用シナリオ

  • ビューのレンダリング
  • メール テンプレート、SMS テンプレートなどのテンプレートを作成します。
  • mybatis-plus-generator などのコード ジェネレーター
  • ワード文書をエクスポート

基本的な統合

jar パッケージのインポート

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
复制代码

テンプレート属性の構成

# freemarker静态资源配置
spring:
  freemarker:
    tempalte-loader-path: classpath:/templates
    cache: true
    charset: UTF-8
    check-template-location: true
    content-type: text/html
    expose-request-attributes: true
    expose-session-attributes: true
    request-context-attribute: request
    suffix: .ftl
复制代码

-イラスト:

  • tempalte-loader-path: テンプレート ファイルへのパスを指定します。
  • cache: ファイルがキャッシュされているかどうか
  • charset: ファイルの文字エンコーディングを設定します
  • content-type: ファイルのタイプ
  • サフィックス: ファイルのサフィックス
  • check-template-location: テンプレート ファイルが存在するかどうかを確認します
  • Exposure-request-attributes: リクエスト属性を有効にするかどうか、デフォルトは false
  • Exposure-session-attributes: HttpSession 属性を有効にするかどうか

ビジネス実現

@Controller
public class UserController
{
    @RequestMapping("/user")
    public String showUser(Model model) 
    {
        List<User> users = new ArrayList<>();
        for (int i = 0; i < 10; i++) 
        {
            User user = new User();
            user.setId((long) i);
            user.setUsername("剑圣无痕" + i);
            user.setAddress("广东省人民路" + i+"号");
            users.add(user);
        }
        model.addAttribute("users", users);
        return "user";
    }
}

复制代码

ファイルを閲覧する

<table border="1">
    <tr>
        <td>用户编号</td>
        <td>用户名称</td>
        <td>用户地址</td>
    </tr>
    <#list users as user>
        <tr>
            <td>${user.id}</td>
            <td>${user.username}</td>
            <td>${user.address}</td>
        </tr>
    </#list>
</table>
复制代码

注: この記事では、freemark の基本的なループ、条件、およびその他の文法については説明しません。詳細については、公式 Web サイトを確認してください。

運用実績

画像.png

その他の機能

以上の手順で、Spring Boot のビューレンダリング機能を Freemark と統合して実現しましたが、実際のプロジェクトでは、テンプレートの設定や Word 文書のエクスポートなどの機能を実装する必要があるため、Freemark でどのように実現するのでしょうか。

特定のテンプレートをロードする

 public void sendFreemarkTemplateMail(String templateName,Mail mail)
    {
        HashMap<String, Object> map = new HashMap<>();
        map.put("companyName", "广东剑圣无痕股份有限公司");
        map.put("address", "广东省建设路1008号");
        map.put("phone", "13123456789");
        Template template;
        try
        {
            template = configurer.getConfiguration().getTemplate(templateName);
            String context = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
            mail.setBody(context);
            sendHtmlMail(mail);
        }
        catch (Exception e)
        {
           logger.error("send freemark error",e);
        }
    }
复制代码

以上が送信メールテンプレートの設定で、テンプレートファイルの出力内容をfreemark経由で読み込んでメール送信

要約する

この記事では、Freemark と Spring Boot の統合について説明します. ご不明な点がございましたら、時間内にフィードバックをお寄せください.

おすすめ

転載: juejin.im/post/7166455005770153991