Spring Boot API Generator
Une extension VSCode puissante pour générer automatiquement une architecture REST propre à partir de classes d'entités Spring Boot.
🚀 Fonctionnalités
- Génération automatique : Créez Controller, Service, Repository, DTOs et Mappers en un clic
- Architecture propre : Suit les meilleures pratiques Spring Boot et les patterns REST
- Validation intelligente : Détecte les erreurs et suggère des améliorations
- Configuration flexible : Personnalisez la génération selon vos besoins
- Support complet des DTOs : Génère des DTOs de création, mise à jour et réponse
- Mappers automatiques : Conversion automatique entre entités et DTOs
- Gestion d'erreurs : Validation robuste avec messages d'erreur détaillés
📦 Installation
- Ouvrez VSCode
- Allez dans Extensions (Ctrl+Shift+X)
- Recherchez "Spring Boot API Generator"
- Cliquez sur "Installer"
Ou installez depuis le fichier VSIX :
code --install-extension spring-boot-api-generator-1.0.0.vsix
🎯 Utilisation
- Ouvrez un fichier d'entité Java (.java)
- Clic droit sur le fichier dans l'explorateur
- Sélectionnez "Générer API depuis Entité"
Méthode 2 : Éditeur
- Ouvrez un fichier d'entité Java
- Clic droit dans l'éditeur
- Sélectionnez "Générer API REST"
Méthode 3 : Palette de commandes
- Ouvrez la palette (Ctrl+Shift+P)
- Tapez "Spring API Generator"
- Sélectionnez la commande appropriée
📋 Exemple d'utilisation
Supposons que vous ayez cette entité :
package com.example.model;
import jakarta.persistence.*;
import java.time.LocalDateTime;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 100)
private String firstName;
@Column(nullable = false, length = 100)
private String lastName;
@Column(nullable = false, unique = true, length = 255)
private String email;
@Column(name = "created_at")
private LocalDateTime createdAt;
@Column(name = "updated_at")
private LocalDateTime updatedAt;
// Constructeurs, getters et setters...
}
L'extension générera automatiquement :
1. UserController.java
@RestController
@RequestMapping("/api/v1/users")
@CrossOrigin(origins = "*")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public ResponseEntity<Page<UserResponse>> getAllUsers(Pageable pageable) {
// Implémentation...
}
@GetMapping("/{id}")
public ResponseEntity<UserResponse> getUserById(@PathVariable Long id) {
// Implémentation...
}
@PostMapping
public ResponseEntity<UserResponse> createUser(@Valid @RequestBody CreateUserRequest request) {
// Implémentation...
}
@PutMapping("/{id}")
public ResponseEntity<UserResponse> updateUser(@PathVariable Long id, @Valid @RequestBody UpdateUserRequest request) {
// Implémentation...
}
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
// Implémentation...
}
}
2. UserService.java
Service avec logique métier complète
3. UserRepository.java
Repository avec méthodes de recherche personnalisées
4. DTOs (CreateUserRequest, UpdateUserRequest, UserResponse)
DTOs avec validation automatique et annotations Lombok (@Data, @Builder)
5. UserMapper.java
Mapper pour la conversion entité ↔ DTO
⚙️ Configuration
Accédez aux paramètres via Fichier > Préférences > Paramètres
et recherchez "Spring API Generator".
Paramètres disponibles
Paramètre |
Type |
Défaut |
Description |
springApiGenerator.basePackage |
string |
com.example |
Package de base pour les classes générées |
springApiGenerator.generateDto |
boolean |
true |
Générer les classes DTO |
springApiGenerator.generateMapper |
boolean |
true |
Générer les classes Mapper |
springApiGenerator.useValidation |
boolean |
true |
Inclure les annotations de validation |
springApiGenerator.apiVersion |
string |
v1 |
Version de l'API pour les endpoints |
Configuration dans settings.json
{
"springApiGenerator.basePackage": "com.monprojet",
"springApiGenerator.generateDto": true,
"springApiGenerator.generateMapper": true,
"springApiGenerator.useValidation": true,
"springApiGenerator.apiVersion": "v2"
}
🏗️ Architecture générée
L'extension suit une architecture en couches propre :
src/main/java/com/example/
├── controller/ # Contrôleurs REST
│ └── UserController.java
├── service/ # Services métier
│ └── UserService.java
├── repository/ # Repositories JPA
│ └── UserRepository.java
├── dto/ # Data Transfer Objects
│ ├── CreateUserRequest.java
│ ├── UpdateUserRequest.java
│ └── UserResponse.java
└── mapper/ # Mappers entité ↔ DTO
└── UserMapper.java
🔍 Validation automatique
L'extension valide automatiquement vos entités et vous alerte en cas de :
Erreurs (bloquantes)
- Absence d'annotation
@Entity
- Absence de champ ID
- Nom de classe ou champs invalides
Avertissements (non-bloquants)
- Conventions de nommage non respectées
- Imports manquants potentiels
- Bonnes pratiques non suivies
- Champs d'audit manquants
🎨 Fonctionnalités avancées
DTOs avec validation et Lombok
- Annotations de validation automatiques (
@NotNull
, @NotBlank
, @Size
, etc.)
- Annotations Lombok (
@Data
, @Builder
, @NoArgsConstructor
, @AllArgsConstructor
)
- Pas de getters/setters manuels - code plus propre et maintenable
- Validation d'email pour les champs contenant "email"
- Validation de nombres positifs pour prix/montants
- Support du pattern Builder pour une création fluide
Repository enrichi
- Méthodes de recherche basées sur les champs
- Requêtes JPQL personnalisées
- Méthodes de tri et comptage
Service complet
- Gestion des transactions
- Méthodes CRUD complètes
- Recherche et pagination
- Gestion d'erreurs
Mappers intelligents
- Conversion bidirectionnelle entité ↔ DTO
- Mise à jour partielle
- Gestion des listes
- Copie de propriétés non-nulles
🚨 Gestion des conflits
Quand un fichier existe déjà, l'extension propose :
- Remplacer : Écrase le fichier existant
- Ignorer : Conserve le fichier existant
- Renommer : Crée un nouveau fichier avec un suffixe
🐛 Dépannage
L'entité n'est pas reconnue
- Vérifiez que la classe a l'annotation
@Entity
- Assurez-vous que le fichier est valide syntaxiquement
- Vérifiez que vous êtes dans un projet Java
Erreur de génération
- Vérifiez les permissions d'écriture
- Assurez-vous que le workspace est ouvert
- Consultez la console de développement (F12)
- Fermez les fichiers inutiles
- Redémarrez VSCode si nécessaire
🤝 Contribution
- Forkez le projet
- Créez une branche pour votre fonctionnalité
- Committez vos changements
- Poussez vers la branche
- Ouvrez une Pull Request
📝 Roadmap
- [ ] Support pour d'autres frameworks (Quarkus, Micronaut)
- [ ] Génération de tests unitaires
- [ ] Support OpenAPI/Swagger
- [ ] Templates personnalisables
- [ ] Support GraphQL
- [ ] Intégration avec Spring Security
📄 Licence
MIT License
🙏 Remerciements
- Équipe Spring Boot pour l'excellent framework
- Communauté VSCode pour les outils de développement
- Contributeurs et utilisateurs de l'extension
Développé avec ❤️ pour la communauté Spring Boot