Spring-bootとテンプレートエンジン:テンプレートパスと接尾辞名の変更
7152 ワード
シリーズゲート
Spring-bootとテンプレートエンジンspring-bootとテンプレートエンジンspring-bootとテンプレートエンジン:テンプレートパスと接尾辞名spring-bootとテンプレートエンジンを変更する:metisMenuを使用してダイナミックマルチレベルメニューを実現する
Spring-bootとテンプレートエンジン:metisMenuを使用してダイナミックマルチレベルメニューを実装するにはspring-bootとbeetlテンプレートエンジンを使用します.使用中、次の2つの疑問が生じました:1、テンプレートフォルダを作成するにはなぜ「templates」を使わなければならないのか、他のファイル名に変えることができますか?2、作成したテンプレートは、必ず「btl」で接尾辞名を付けますか?「html」または他の接尾辞名を使用できますか?以下、以上の問題について一緒に検討しましょう.
まずFreeMarker,Groovy,Thymeleaf,Mustacheの4種類のテンプレートエンジンを見てみましょう
spring-boot docsには次の文があります.
Spring Boot includes auto-configuration support for the following templating engines: FreeMarker Groovy Thymeleaf Mustache
When you’re using one of these templating engines with the default configuration, your templates will be picked up automatically from:
src/main/resources/templates.
パッケージ名orgを表示する.springframework.boot.autoconfigure.thymeleafのThymeleafPropertiesソース:
パッケージ名orgを表示する.springframework.boot.autoconfigure.groovy.templateのGroovyTemplatePropertiesソース:
パッケージ名orgを表示する.springframework.boot.autoconfigure.freemarkerの下にあるFreeMarkerPropertiesソース:
パッケージ名orgを表示する.springframework.boot.autoconfigure.Mustacheの下にあるMustachePropertiesソース:
以上から分かるように、spring-bootプロジェクトでは、上記のいずれかのテンプレートを使用し、設定を行わない場合、spring-bootはclasspathパスの下にあるtemplatesをテンプレートファイルのルートディレクトリとしてデフォルトであり、テンプレートの接尾辞名も対応するテンプレートのデフォルト接尾辞名としてデフォルトである.
テンプレートファイルのルートディレクトリとテンプレート接尾辞名を変更するには、アプリケーションを新規作成する必要があります.propertiesファイル、このファイルで構成します.
構成は簡単です.上記の4つのテンプレートの構成ソースコードを引き続き確認すると、class定義の前に@ConfigurationProperties注記があることに気づきます.
この注釈から、異なるテンプレートエンジン、spring-booはApplication.propertiesで読み込まれた構成の名前の接頭辞は異なります.また、spring-boot起動時には、この注記により自動的にApplicationを実行する.propertiesで構成されたspring.XXXXXX.abcは、対応するテンプレートPropertiesのabcプロパティに値を割り当てます.だから、Application.propertiesにspringを追加するだけです.XXXXXX.abc対応の構成でよい.次に、構成例を示します.
次にbeetlテンプレートエンジンを見てみましょう
Spring-bootの場合、beetlテンプレートエンジンを使用してbeetlのlibパッケージを追加できない場合は、次のlibパッケージを追加する必要があります.
追加したら、上記のようにbeetlテンプレートエンジンのデフォルト構成と、デフォルト構成をどのように変更するかを分析します.
パッケージ名comを表示します.ibeetl.starterの下のBeetlTemplateConfigソース:
一目瞭然,修正Application.propertiesは次のとおりです.
OR
この場合、templatesディレクトリの下に他のフォルダを新規作成したり、resourceの下に直接他のフォルダを新規作成したりして、htmlを接尾辞とするテンプレートファイルを入れることができます.
Spring-bootとテンプレートエンジンspring-bootとテンプレートエンジンspring-bootとテンプレートエンジン:テンプレートパスと接尾辞名spring-bootとテンプレートエンジンを変更する:metisMenuを使用してダイナミックマルチレベルメニューを実現する
Spring-bootとテンプレートエンジン:metisMenuを使用してダイナミックマルチレベルメニューを実装するにはspring-bootとbeetlテンプレートエンジンを使用します.使用中、次の2つの疑問が生じました:1、テンプレートフォルダを作成するにはなぜ「templates」を使わなければならないのか、他のファイル名に変えることができますか?2、作成したテンプレートは、必ず「btl」で接尾辞名を付けますか?「html」または他の接尾辞名を使用できますか?以下、以上の問題について一緒に検討しましょう.
まずFreeMarker,Groovy,Thymeleaf,Mustacheの4種類のテンプレートエンジンを見てみましょう
spring-boot docsには次の文があります.
Spring Boot includes auto-configuration support for the following templating engines:
When you’re using one of these templating engines with the default configuration, your templates will be picked up automatically from:
src/main/resources/templates.
パッケージ名orgを表示する.springframework.boot.autoconfigure.thymeleafのThymeleafPropertiesソース:
@ConfigurationProperties(
prefix = "spring.thymeleaf"
)
public class ThymeleafProperties {
private static final Charset DEFAULT_ENCODING = Charset.forName("UTF-8");
private static final MimeType DEFAULT_CONTENT_TYPE = MimeType.valueOf("text/html");
public static final String DEFAULT_PREFIX = "classpath:/templates/";
public static final String DEFAULT_SUFFIX = ".html";
private boolean checkTemplate = true;
private boolean checkTemplateLocation = true;
private String prefix = "classpath:/templates/";
private String suffix = ".html";
private String mode = "HTML5";
......
......
}
パッケージ名orgを表示する.springframework.boot.autoconfigure.groovy.templateのGroovyTemplatePropertiesソース:
@ConfigurationProperties(
prefix = "spring.groovy.template",
ignoreUnknownFields = true
)
public class GroovyTemplateProperties extends AbstractTemplateViewResolverProperties {
public static final String DEFAULT_RESOURCE_LOADER_PATH = "classpath:/templates/";
public static final String DEFAULT_PREFIX = "";
public static final String DEFAULT_SUFFIX = ".tpl";
public static final String DEFAULT_REQUEST_CONTEXT_ATTRIBUTE = "spring";
private String resourceLoaderPath = "classpath:/templates/";
......
......
}
パッケージ名orgを表示する.springframework.boot.autoconfigure.freemarkerの下にあるFreeMarkerPropertiesソース:
@ConfigurationProperties(
prefix = "spring.freemarker"
)
public class FreeMarkerProperties extends AbstractTemplateViewResolverProperties {
public static final String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/";
public static final String DEFAULT_PREFIX = "";
public static final String DEFAULT_SUFFIX = ".ftl";
private Map settings = new HashMap();
private String[] templateLoaderPath = new String[]{"classpath:/templates/"};
private boolean preferFileSystemAccess = true;
......
......
}
パッケージ名orgを表示する.springframework.boot.autoconfigure.Mustacheの下にあるMustachePropertiesソース:
@ConfigurationProperties(
prefix = "spring.mustache"
)
public class MustacheProperties extends AbstractTemplateViewResolverProperties {
public static final String DEFAULT_PREFIX = "classpath:/templates/";
public static final String DEFAULT_SUFFIX = ".html";
private String prefix = "classpath:/templates/";
private String suffix = ".html";
public MustacheProperties() {
super("classpath:/templates/", ".html");
}
......
......
}
以上から分かるように、spring-bootプロジェクトでは、上記のいずれかのテンプレートを使用し、設定を行わない場合、spring-bootはclasspathパスの下にあるtemplatesをテンプレートファイルのルートディレクトリとしてデフォルトであり、テンプレートの接尾辞名も対応するテンプレートのデフォルト接尾辞名としてデフォルトである.
テンプレートファイルのルートディレクトリとテンプレート接尾辞名を変更するには、アプリケーションを新規作成する必要があります.propertiesファイル、このファイルで構成します.
構成は簡単です.上記の4つのテンプレートの構成ソースコードを引き続き確認すると、class定義の前に@ConfigurationProperties注記があることに気づきます.
@ConfigurationProperties(
prefix = "spring.XXXXXX"
)
この注釈から、異なるテンプレートエンジン、spring-booはApplication.propertiesで読み込まれた構成の名前の接頭辞は異なります.また、spring-boot起動時には、この注記により自動的にApplicationを実行する.propertiesで構成されたspring.XXXXXX.abcは、対応するテンプレートPropertiesのabcプロパティに値を割り当てます.だから、Application.propertiesにspringを追加するだけです.XXXXXX.abc対応の構成でよい.次に、構成例を示します.
......
......
#THYMELEAF (ThymeleafAutoConfiguration)
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html # ;charset= is added
spring.thymeleaf.cache=true # set to false for hot refresh
#FREEMARKER (FreeMarkerAutoConfiguration)
spring.freemarker.allowRequestOverride=false
spring.freemarker.allowSessionOverride=false
spring.freemarker.cache=true
spring.freemarker.checkTemplateLocation=true
spring.freemarker.contentType=text/html
spring.freemarker.exposeRequestAttributes=false
spring.freemarker.exposeSessionAttributes=false
spring.freemarker.exposeSpringMacroHelpers=false
spring.freemarker.prefix=
spring.freemarker.requestContextAttribute=
spring.freemarker.settings.*=
spring.freemarker.suffix=.ftl
spring.freemarker.templateEncoding=UTF-8
spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.viewNames= # whitelist of view names that can be resolved
#GROOVY TEMPLATES (GroovyTemplateAutoConfiguration)
spring.groovy.template.allowRequestOverride=false
spring.groovy.template.allowSessionOverride=false
spring.groovy.template.cache=true
spring.groovy.template.configuration.*= # See Groovy's TemplateConfiguration
spring.groovy.template.contentType=text/html
spring.groovy.template.prefix=classpath:/templates/
spring.groovy.template.suffix=.tpl
spring.groovy.template.templateEncoding=UTF-8
spring.groovy.template.viewNames= # whitelist of view names that can be resolved
......
......
次にbeetlテンプレートエンジンを見てみましょう
Spring-bootの場合、beetlテンプレートエンジンを使用してbeetlのlibパッケージを追加できない場合は、次のlibパッケージを追加する必要があります.
com.ibeetl
beetl-framework-starter
1.1.22.RELEASE
追加したら、上記のようにbeetlテンプレートエンジンのデフォルト構成と、デフォルト構成をどのように変更するかを分析します.
パッケージ名comを表示します.ibeetl.starterの下のBeetlTemplateConfigソース:
......
......
public class BeetlTemplateConfig {
@Value("${beetl.templatesPath:templates}")
String templatesPath;
@Value("${beetl.suffix:btl}")
String suffix;
@Value("${beetl-beetlsq.dev:true}")
boolean dev;
......
......
}
一目瞭然,修正Application.propertiesは次のとおりです.
beetl.templatesPath=templates/other/
beetl.suffix=html
OR
beetl.templatesPath=other/
beetl.suffix=html
この場合、templatesディレクトリの下に他のフォルダを新規作成したり、resourceの下に直接他のフォルダを新規作成したりして、htmlを接尾辞とするテンプレートファイルを入れることができます.