Mini Framework MVC
Presentation
Objectif principal : Un mini framework web MVC en Java, style Spring MVC mais ultra simplifie. Routing par annotations, injection de dependances basique, moteur de templates.
Technologies utilisees : Java avec Servlets comme base. Reflection pour le scanning des annotations. Jetty embarque pour le serveur. Templates JSP ou custom.
Fonctionnalites cles : @Controller et @RequestMapping pour le routing, @Autowired pour l'injection, @PathVariable pour les parametres d'URL, templates avec variables, gestion des sessions.
Livrables attendus : Le framework en JAR + une app de demo (CRUD basique). Documentation sur comment creer des controllers.
Calendrier previsionnel : Trois semaines. La reflection en Java c'est puissant mais verbeux. Et comprendre le cycle de vie des Servlets ca prend du temps.
Parties prenantes & criteres de succes : Projet pour demystifier Spring. Apres ca je comprends ce que fait Spring sous le capot.
Le Defi
Le scanning des classes annotees. Au runtime, Java ne liste pas facilement toutes les classes d'un package. Et l'injection de dependances avec l'ordre de creation des beans, c'est un casse-tete (dependances circulaires).
La Solution
Pour le scanning, je lis le classpath et je charge les classes une par une pour verifier les annotations. Pour l'injection, je fais deux passes : d'abord je cree toutes les instances, puis je les connecte. Les dependances circulaires sont detectees et signalees.
Architecture Technique
DispatcherServlet qui recoit toutes les requetes et dispatch vers le bon controller. ClassScanner qui trouve les classes annotees au demarrage. Container qui gere les instances et l'injection. RouteRegistry qui mappe URL -> methode. ViewResolver qui rend les templates avec les donnees.
Points Cles
- Routing par annotations
- Injection de dependances
- Serveur embarque
Apercu
Resultats & Apprentissages
Le framework marche pour des apps simples. Maintenant quand j'utilise Spring, je comprends ce qu'il fait. La reflection c'est magique mais lent, je comprends pourquoi Spring fait du scanning au demarrage et pas a chaque requete.
Evolutions Futures
Middlewares/intercepteurs. Validation des inputs avec annotations. ORM basique. Support des WebSockets. Peut-etre generation de code au lieu de reflection pour les perfs.