[JAVA] [Pour usage interne] Pour ceux affectés au projet Spring Boot (en construction)
Cet agenda est utilisé pour expliquer aux employés qui ont été affectés à Spring Boot pour la première fois.
Connaissances préalables
- Syntaxe de base Java 8
- HTML5, CSS3, JavaScript(ES5)
- Servlet3.1
- HTTP GET, POST
Environnement de développement
- Eclipse Pleiades 4.7
- Java8
- Spring Boot 1.5.10
- PostgreSQL 9.6
- superagent.js
Cible
Visez à être capable de:
- Ajouter un écran
- Ajout du traitement client-serveur (ajout de l'API Restful)
- Accéder à la base de données (MyBatis)
- Comprendre chaque fichier
- Comprendre le contrôleur, le service, etc. correspondant à MVC
- Créer et déployer un pot avec Maven
- Ajouter une bibliothèque de Maven
- Ajout du traitement des droits d'accès (Spring Security)
- Comprendre l'idée des règles à partir des paramètres
Description de la bibliothèque
Spring Boot
- Une collection de nombreuses bibliothèques liées au printemps
- Hello World peut être affiché avec la configuration minimale
- Les paramètres nécessaires tels que les paramètres de journal ont été définis à l'avance.
- Est-ce que ça devient populaire?
MyBatis
- Version améliorée d'O / R Mapper. IBatis
- SQL peut être écrit non seulement en XML mais aussi dans les annotations
Thmeleaf
- Moteur de modèle. Quelque chose comme JSP.
- Alors que JSP spécifie une balise dédiée à JSP, Thymeleaf le spécifie avec un attribut dédié à Thmeleaf.
- Puisque le navigateur ignore simplement les attributs non reconnus, la mise en page est-elle interrompue?
--Division du travail entre concepteurs et programmeurs
- Spring Boot recommande Thymeleaf au lieu de JSP
Qu'est-ce que Maven
[Pour les super débutants] Super introduction à Maven
- Outil de gestion de construction
- Réglé sur
pom.xml
- Les bibliothèques externes peuvent être utilisées avec
<dependency>
.
Explication spécifique
1. Explication de la structure des dossiers
Spring et MVC
- Controller
- Service
- Model
- View
1. Ajouter un écran
procédure
- Placez le HTML dans le dossier
src / main / static / template
- Créez une méthode dans la classe Controller qui renvoie le HTML créé.
SampleController.java
public ModelAndView index(ModelAndView mav) {
mav.setViewName("sample");
return mav;
}
point
- Le nom VIEW passé à
setViewName
ne nécessite pas d'extension (peu importe s'il a une extension). Il semble qu'il puisse être utilisé avec JSP et Thymeleaf.
2. Ajouter l'API Restful
POST API
- Superagent utilise les méthodes
post
, send
API POST (téléchargement de fichiers)
- superagent utilise les méthodes
post
, field
, ...
Restful API
https://qiita.com/TakahiRoyte/items/949f4e88caecb02119aa
- Convention de dénomination de l'API
- Utilisez correctement GET et POST
3. Accéder à DB avec My Batis
Site Web officiel MyBatis
XML
- mybatis-config.xml
src/main/resources/mybatis/mapper/*.xml
- Les balises peuvent être utilisées pour générer dynamiquement du SQL
--
<if>
,<pourchaque>
,<où>
, etc.
- L'attribut
parameterType
est probablement inutile car il devine les informations que MyBatis recevra.
Classe DAO
- Ajouter
@ Component
- Appeler des méthodes telles que
selectOne
et selectList
de sqlSession
- Spring Security
Spring Security Reference
Thymeleaf + Spring Security integration basics
SecurityConfig.java
Réglez les éléments suivants, etc.
- URL accessible sans connexion
- URL inaccessibles sans le rôle
Thymeleaf
- Vous pouvez écrire quelque chose comme
sec: authorize =" hasRole ('ROLE_USER') "
5. Comment utiliser Maven
Paramètres sur le système existant
pom.xml
(spring-boot-starter-parent) pour Spring Boot est spécifié par <parent>
- La version de la bibliothèque externe à utiliser est également définie.
--Si vous souhaitez spécifier la version, spécifiez-la avec
<properties>
.
- Utilisation de sa propre bibliothèque
- Génération JavaDoc
Mise à jour Maven dans Eclipse
Après avoir modifié pom.xml
, mettez-le à jour avec" Clic droit sur projet> Maven> Mettre à jour le projet ".
Générer un fichier jar (pour le déploiement)
- Lorsque la commande
mvn install
est exécutée, un fichier jar est généré dans le dossier project / target
.
- Si vous souhaitez ignorer l'exécution du code de test, exécutez
mvn install -Dmaven.test.skip = true
.
6. Relatif à Spring Boot
application.properties
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
- Fichier qui définit les paramètres externes pour Spring Boot
- Si vous l'ouvrez dans "Spring Property Editor" d'Eclipse, vous pouvez terminer la saisie de la clé.
- Peut également être spécifié comme argument de la commande java.
java -jar sample.jar --server.port = 8081
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html
Profile
https://area-b.com/blog/2015/01/30/2316/
http://endok.hatenablog.com/entry/2016/06/12/181900
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html
- Un mécanisme pour changer les valeurs de réglage pour chaque environnement d'exécution.
- Passez à la classe Java avec `@Profile (" test ") ʻetc.
- Thymeleaf utilise
@ environment
pour changer
https://blog.tagbangers.co.jp/ja/2015/01/18/thymeleaf-environment-properties
Paramètres sur le système existant
-
Définir 3 types de profils dans le système existant
--local: démarrer dans un environnement local
--test: démarrer sur le serveur de l'environnement de développement
--release: démarrer sur le serveur de production
-
Spécifiez un profil comme --spring.profiles.active = local
dans l'argument de la commande java
-
ʻApplication.properties est préparé pour chaque profil. --ʻApplication.properties
: valeur de réglage par défaut.
--ʻApplication-test.properties: valeur de réglage pour l'environnement de test. --ʻApplication-release.properties
: Paramètres de l'environnement de production. Désactiver des outils tels que Swagger, activer le cache
--ʻApplication-local.properties`: paramètres personnels. En supposant ne pas s'engager.
Comment déployer
- Exécutez
mvn install -Dmaven.test.skip = true
avec la commande pour générer un fichier jar
- Généré dans le dossier
project / target
- Démarrez le serveur avec la commande java
- Il existe un fichier batch pour démarrer (start.bat)
Paramètres de journal pour les projets existants
- Adoption d'une combinaison de SLF4J (interface) et Logback (implémentation)
- Sur les systèmes plus anciens, il existe de nombreuses combinaisons de journalisation commune (interface) et log4j (implémentation).
src/main/resources/logbakc.xml
- Ajouter des paramètres individuels au format de journal préparé depuis le début
- Générer le champ
log
avec @ Slf4j
de Lombok
- Log4jdbc a été adopté pour afficher le SQL exécuté (l'état où la valeur préparée est également sortie) dans le journal.
- https://qiita.com/YAKINIKU/items/5141c7205f3c67691c92
- Journaux de sortie avant et après Cntroller (AOP)
JUnit
Printemps @autowired
Exercice
Conditions préalables
- L'environnement de développement est en place
- Ajouter des fonctionnalités aux projets existants à l'aide de Spring Boot
- La communication Ajax utilise superaget.js
Base de données
create_table.sql
CREATE table user (
SERIAL user_id NOT NULL,
TEXT user_name NOT NULL,
TEXT section NOT NULL,
PRIMARY KEY (user_id)
);
Ajouter une classe de contrôleur
- Vérifier la demande / réponse dans l'outil de développement de navigateur
Créer un fichier HTML
Créez sample.html
et affichez le contenu de sample.html
avec URL / sample.html
- Reportez-vous à la valeur dans le fichier de message (
message.properties
)
Créer l'API GET (1 paramètre)
- Avec
@ RequestParam
, recevez un numéro du client.
- Côté serveur, calculez le carré du numéro reçu et renvoyez-le au client
Créer l'API GET (transmettre une information)
- Avec
@ RequestParam
, recevez un numéro du client.
- Côté serveur, calculez le carré du numéro reçu et renvoyez-le au client
Créer l'API GET (transmettre plusieurs informations)
- Créez une classe de bean et recevez plusieurs informations dans cette classe.
- Côté serveur, effectuez un certain traitement sur les informations reçues et renvoyez-les au client
Créer une API POST
- Créez une API POST.
--Recevoir plusieurs informations
- Effectuer un traitement sur les informations reçues et les renvoyer au client
- Appelez une API créée avec JavaScript
--Afficher le contenu de la réponse à l'écran
Créer une API POST (téléchargement de fichier)
- Créer une API POST
--Recevoir un fichier et une chaîne
--Enregistrer le fichier reçu
- Appelez une API créée avec JavaScript
Accès à la base de données
- Ajouter une méthode à la classe DAO
- Appel d'une méthode de la classe DAO à partir d'une méthode de la classe Controller
SELECT avec ʻuser_id`
- Créer une méthode dans la classe DAO
--ʻMéthode pour obtenir le résultat réduit par user_id`
SELECT par nom d'utilisateur ou service
- Ecrire une clause WHERE en utilisant
<if>
, `
- Si les informations transmises à SQL sont nulles, ne restreignez pas
INSERT ʻUser` dans la table
- Ecrire une clause WHERE en utilisant
<if>
, `
- Si les informations transmises à SQL sont nulles, ne restreignez pas
Stocker les informations dans une classe hiérarchique avec une seule instruction SELECT
- Ecrire des instructions SQL en utilisant
<collection>
Maven
Modifiez pom.xml
pour utiliser une bibliothèque externe
- Vérifiez le référentiel local Maven
- Vérifier les propriétés du projet Eclipse
Générez un fichier jar et démarrez le serveur avec la commande java
- Générer un fichier jar avec la commande mvn sans utiliser Eclipse
- Spécifiez le numéro de port dans l'argument de la commande java
- Modifiez le profil et vérifiez que les valeurs de réglage, etc.
Vérifiez le journal
- Modifiez le niveau de journalisation dans logback.xml et vérifiez si le journal est sorti / non sorti
Problème de phrase
HTTP
- Expliquez la différence entre HTTP GET et POST.
-En-tête et corps de la demande / réponse
Base de données
- Expliquez les fonctionnalités d'O / R Mapper en fonction des avantages et des inconvénients.
- Vous pouvez utiliser «#» ou «$» pour recevoir des informations de Java. Expliquez la différence.
HelloWorld
Ajout de l'API Restful
@RequestBody, @RequestParam, etc.
téléchargement de fichiers
Introduction de MyBatis
Spring Boot Présentation approfondie Chapitre 14 Exemple de système Web
Problèmes de servlet
[Supplément] Comparaison avec Terasoluna