[JAVA] Appliquer Twitter Bootstrap 4 à Spring Boot 2 à l'aide de Webjars

Déclencheur

Lors de la création d'une application avec Thymeleaf, je voulais définir la version de chaque application, c'est donc un mémo de travail à ce moment-là.

Présentation des WebJars

Cette fois, j'utiliserai maven. BootStrap4 a une fonction qui utilise jQuery en plus de sa propre feuille de style, spécifiez donc la version correspondante. Pour pom.xml, reportez-vous à l'annexe ci-dessous.

Modèle HTML

Les spécifications CSS / JavaScript pour Bootstrap à l'aide de WebJars sont les suivantes.

index.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport"
          content="width=device-width, initial-scale=1, shrink-to-fit=no" />
    <title>Title</title>
    <link rel="stylesheet" th:href="@{/webjars/bootstrap/4.2.1/css/bootstrap.min.css}" />
</head>
<body>
<div th:text="${hello}"></div>
<script th:src="@{/webjars/jquery/3.3.1-1/jquery.min.js}"></script>
<script th:src="@{/webjars/bootstrap/4.2.1/js/bootstrap.min.js}"></script>
</body>
</html>

La méthode de spécification dans Thymeleaf est @ {/ webjars / installation package / version / path to resource}.

Tirez la spécification de version des paramètres de Spring Boot

Au lieu de définir la version Bootstrap ou jQuery dans le modèle, vous pouvez également le lire à partir des paramètres Spring. L'exemple suivant décrit les paramètres Spring dans application.yml et lit ce contenu.

Réglage

application.yml


webjars:
  bootstrap: "4.2.1"
  jquery: "3.3.1-1"

Lire l'ensemble des webjars

Il y a plusieurs façons, mais cette fois nous traiterons une classe de configuration comme @ Component dans le bean de gestion Spring.

WebjarsConfig.java


import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import lombok.Data;

@Component
@ConfigurationProperties(prefix = "webjars")
@Data
public class WebjarsConfig {
	private String bootstrap;
	private String jquery;
}

Modèle HTML (Thymeleaf)

Notez comment définir l'URL d'ancrage et comment faire référence à la valeur du bean de gestion Spring.

index.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport"
          content="width=device-width, initial-scale=1, shrink-to-fit=no" />
    <title>Title</title>
    <link rel="stylesheet" th:href="@{/webjars/bootstrap/{version}/css/bootstrap.min.css(version=${@webjarsConfig.bootstrap})}" />
</head>
<body>
<div th:text="${hello}"></div>
<script th:src="@{/webjars/jquery/{version}/jquery.min.js(version=${@webjarsConfig.jquery})}"></script>
<script th:src="@{/webjars/bootstrap/{version}/js/bootstrap.min.js(version=${@webjarsConfig.bootstrap})}"></script>
</body>
</html>

Pour définir une variable dans th: src, placez la variable dans {} et spécifiez-la à la fin de l'URL (variable = $ {value bound from Spring}).

Puisque nous avons défini le WebjarsConfig plus tôt sans le nom @ Component, le nom référencé sera webjarsConfig.

Appendix

Environnement de vérification

Windows10 / SpringBoot 2.1.2

pom.xml

pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.github.a-pz</groupId>
	<artifactId>spring-thymeleaf-bootstrap4</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>spring-thymeleaf-bootstrap4</name>
	<description>spring-thymeleaf-bootstrap4</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.webjars</groupId>
			<artifactId>bootstrap</artifactId>
			<version>4.2.1</version>
		</dependency>
		<dependency>
			<groupId>org.webjars</groupId>
			<artifactId>jquery</artifactId>
			<version>3.3.1-1</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>

Matériel de référence

Recommended Posts

Appliquer Twitter Bootstrap 4 à Spring Boot 2 à l'aide de Webjars
Essayez Spring Boot de 0 à 100.
Introduction à Spring Boot ① ~ DI ~
Introduction à Spring Boot ② ~ AOP ~
Introduction à Spring Boot, partie 1
Essayez d'utiliser Spring Boot Security
Déployez des applications Spring Boot sur Heroku sans utiliser la CLI Heroku
J'ai essayé de démarrer avec Swagger en utilisant Spring Boot
8 choses à insérer dans DB en utilisant Spring Boot et JPA
Comment contrôler les transactions dans Spring Boot sans utiliser @Transactional
Tutoriel Spring Boot à l'aide de l'authentification Spring Security
Comment configurer Spring Boot + PostgreSQL
Comment utiliser ModelMapper (Spring boot)
Mise à niveau de la botte à ressort de la série 1.5 à la série 2.0
Comment créer un hinadan pour un projet Spring Boot à l'aide de SPRING INITIALIZR
[Introduction à Spring Boot] Vérification de la validation du formulaire
Un débutant Java a essayé de créer une application Web simple à l'aide de Spring Boot
Essayez d'utiliser Spring Boot avec VS Code
L'histoire de la transition de Spring Boot 1.5 à 2.1
Modifications lors de la migration de Spring Boot 1.5 vers Spring Boot 2.0
Modifications lors de la migration de Spring Boot 2.0 vers Spring Boot 2.2
Spring Boot + Thymeleaf Boot Strap Méthode d'installation mémo
Étapes pour créer une application chameau simple avec les démarreurs Apache Camel Spring Boot
Comment diviser un fichier de message Spring Boot
Ajoutez une botte de printemps et un dégradé à éclipse
[FCM] Implémentation de la transmission de messages en utilisant FCM + Spring boot
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment utiliser h2db intégré avec Spring Boot
Comment réduire l'image de Spring Boot Docker
Comment utiliser les attributs de session Spring Boot (@SessionAttributes)
Créez une application Spring Boot à l'aide d'IntelliJ IDEA
L'histoire de la montée de la série Spring Boot 1.5 à la série 2.1
Essayez d'implémenter la fonction de connexion avec Spring Boot
Comment ajouter un chemin de classe dans Spring Boot
Introduction à Spring Boot + In-Memory Data Grid
Comment se lier avec un fichier de propriétés dans Spring Boot
Essayez d'automatiser la migration avec Spring Boot Flyway
[Java] Article pour ajouter une validation avec Spring Boot 2.3.1.
Je voulais classer la botte à ressort dans un multi-projet
[Spring Boot] Comment se référer au fichier de propriétés
Appliquer automatiquement le style bootstrap pour concevoir des fichiers de vue
[Introduction à Spring Boot] Fonction d'authentification avec Spring Security
Spring Boot - Comment définir le délai d'expiration de la session
Défi Spring Boot
Forme de botte de printemps
Spring Boot Rappelez-vous
gae + botte à ressort
Plans pour prendre en charge JDK 11 pour Eclipse et Spring Boot
Paramètres de connexion à MySQL avec Spring Boot + Spring JDBC
Test des entités et référentiels JPA à l'aide de Spring Boot @DataJpaTest
Essayez d'utiliser un conteneur DI avec Laravel et Spring Boot
Comment définir l'injection de dépendance Spring Boot (DI)
Comment appliquer HandlerInterceptor à la passerelle entrante http de Spring Integration
Comment écrire un test unitaire pour Spring Boot 2
Si vous souhaitez séparer le traitement Spring Boot + Thymeleaf
Un mémorandum de dépendance à Spring Boot2 x Doma2
Essayez d'utiliser OpenID Connect avec Keycloak (application Spring Boot)
05. J'ai essayé de supprimer la source de Spring Boot
[Compatible JUnit 5] Ecrire un test en utilisant JUnit 5 avec Spring boot 2.2, 2.3