Ce tutoriel explique comment automatiser la génération de code pour les couches front-end et back-end d'un microservice Spring Cloud. L'outil utilisé est un générateur de code personnalisé, inspiré de l'approche renren-generator mais adapté à notre architecture.
- Récupération du générateur de code
git clone https://gitee.com/renrenio/renren-generator.git
Copiez le dossier renren-generator dans la racine du projet PassJava. Ajoutez ensuite le module dans le fichier pom.xml parent :
<module>renren-generator</module>
- Configuration du générateur
2.1 Base de données
Dans src/main/resources/application-dev.yml, modifiez les paramètres de connexion :
url: jdbc:mysql://129.211.188.xxx:3306/passjava_qms?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: root
2.2 Paramètres métier
Dans src/main/resources/generator.properties, définsisez le package, l'auteur et le préfixe des tables :
mainPath=com.jackson0714
package=com.jackson0714.passjava
moduleName=question
author=jackson0714
tablePrefix=qms_
2.3 Adaptation du template Controller
Dans src/main/resources/template/Controller.java.vm, retirez les imports Shiro superflus et commentez les annotations correspondantes (elles seront ajoutées ultérieurement) :
// import org.apache.shiro.authz.annotation.RequiresPermissions;
// @RequiresPermissions("${moduleName}:${pathName}:list")
- Lancement du générateur
Démarrez l'application. Ouvrez http://localhost dans un navigateur : la console affiche les tables de la base passjava_qms (par exemple qms_question et qms_type).
- Génération et intégration du code
- Cliquez sur Générer le code pour chaque table.
- Copiez le dossier
maingénéré dans le modulepassjava-question/src. - Supprimez le répertoire
passjava-question/src/main/resources/src(code front-end inutile ici).
Le code généré comprend les contrôleurs, DAO, entités, implémentations de services et fichiers de mapping MyBatis.
- Ajout du module commun
Certaines classes utilitaires sont référencées par le code généré. Créez un module passjava-common (Maven) et ajoutez-y les dépendances suivantes dans son pom.xml :
<!-- MyBatis-Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.2.0</version>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<!-- httpcore -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.12</version>
</dependency>
<!-- commons-lang -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!-- Servlet API (scope provided) -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
- Import des classes utilitaires
Copiez depuis le projet renren-fast les fichiers suivants dans com.jackson0714.common.utils :
Constans.javaPageUtils.javaQuery.javaR.javaRRException.java
Et dans com.jackson0714.common.xss :
HTMLFilter.javaSQLFilter.java
- Liaison entre modules
Dans le pom.xml du module passjava-question, ajoutez la dépendance vers le module commun :
<dependency>
<groupId>com.jackson0714.passjava</groupId>
<artifactId>passjava-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Après ces étapes, le microservice passjava-question est capable d'utiliser le code généré pour les opérations CRUD de base.