Skip to content

ElyousfiMohamed/ELYOUSFI_Mohamed_JEE

Repository files navigation

Mohamed ELYOUSFI

<💻 Compte Rendu des Travaux Pratiques JEE💻/>



Mini Projet Framework d'Injection des dépendances (cliquez 🖱) [Code source]

1 - Avec XML

Entity Obj : c'est l'objet qu'on va récuperer depuis le fichier XML

Entity Objs : qui contient une list des objets | cette classe est mappé avec le fichier XML (XmlRootElement / XmlElement)

Entity Property : qui va etre utilisé pour représenter soit le nom de setter (cas injection par setter) soit le nom d'attribut (cas injection direct)

Fichier XML

1.1 - Setter
Injection par Setter en utilisant JAXB pour récuperer les objets depuis le fichier XML Simulation en utilisant l'exemple de [TP1]

Appel à l'"injector" :

Résultat :
1.2 - Constructeur

Changement du nom de classe qu'on veut injecter son objet :

Résultat :
1.3 - Accés direct

Insertion du nom de l'attribut dans le fichier XML :

Résultat :

2 - Avec ANNOTATIONS

Création des annotations - Autowired

Création des annotations - Component

Classe Injector : scan sur les classes du package donné en parametres (burningwave)

Variables necessaires

Scan sur les annotations

L'idée c'est de faire un scan sur tous les classes qu'on récuperer par "burningwave" pour localiser les annotations.
Si il est utilisé dans une méthode donc on va stocker cette méthode et c'est donc l'injection par "setter".
Si il est utilisé dans un constructeur donc on va stocker cet constructeur et c'est donc l'injection par "constructeur".
Si il est utilisé dans un field (attribut) donc on va stocker cet attribut et c'est donc l'injection par "accés direct".

Objet concerner par l'injection

Déclaration de l'objet concerner par l'injection comme un attribut de la classe Injector2 pour le retourner au utilisateur aprés :

Injection

Simulation en utilisant l'exemple de [TP1]
1.1 - Setter
Résultat :
1.2 - Constructeur
Résultat :
1.3 - Accés direct
Résultat :


Activité Pratique Spring - Etudiants(cliquez 🖱) [Code source]

Entities

- Entity Etudiant
- Enum Genre

Repositories

- Etudiant Repository

Services

- Service Etudiant

Controllers

- Etudiant Controller
- Security Controller

Spring Security

- AppUser Entity
- AppRole Entity
- AppUser Repository
- AppRole Repository
- IService Security + Implementation
- PassEncoder Bean
- Security Config
- Remplir la bdd par des données
- Templates Thymeleaf

Login

Pagination

Recherche

Suppression

Modification

Ajout

Logout


TP1 - Injection des dépendances (cliquez 🖱) [Code source]

On considère le schéma suivant ou les classes sont liées par un couplage faible

Implémentation en java :
- Interface IDao et ses implémentations :
- Interface IMetier et son implémentation :

1- Injection des dépendances par instanciation Statique

Résultat d'exécution :

2- Injection des dépendances par instanciation Dynamique

L'injection dynamique et faite à l'aide d'un fichier config.txt qui contient les noms des classes qui vont 
etre chargé dans la couche presentation
1 : Chargement du fichier config.txt
2 : Lecture des noms complets(package + nom de la classe) des classes existant dans ce fichier
3 : Récuperation des instances de "Class" à partir des noms complet des classes 
4 : L'instanciation des classes(si ces classe ont un constructeur sans paramètre)
5 : Chargement et invocation(injection) du methode "setDao"
Résultat d'exécution :

3- Injection des dépendances avec Spring

3.1- Avec fichier beans.xml :

C'est un peu comme le principe de fichier de configuration dans l'injection dynamique, mais ici les instances sont passé a travers des beans
Et aprés on va récupurer les beans par la méthode "getBean"
Résultat d'exécution :

3.2- Avec les annotations :

Résultat d'exécution :


TP2 - Java Persistence API (JPA) (cliquez 🖱) [Code source]

Spring Data

Application.properties

Entité Patient

Patient Repository

Application Spring

h2-console

Table Patient


TP2 - JPA (Associations OneToOne, ManyToOne) (cliquez 🖱) [Code source]

Diagramme de classe

Les modeles

- Consultation
- Medecin
- Patient
- RendezVous
- Enumeration statusRdv

Repositories

- Consultation Repository
- Medecin Repository
- Patient Repository
- RendezVous Repository

Couche metier (Service)

- Interface IHospitalService
- Une implémentation de cette interface

JpaAssociationsApplication

application.properties

Les tables dans la bdd H2

- Consultation
- Medecin
- Patient
- RendezVous


TP2 - JPA (Association ManyToMany) (cliquez 🖱) [Code source]

Diagramme de classe

Les modeles

- Role
- User

Repositories

- Role Repository
- User Repository

Couche metier (Service)

- Interface UserService
- Une implémentation de cette interface

ManyToManyDemoApp (main)

application.properties

Les tables dans la bdd phpMyAdmin

- role
- user
- user_roles


TP3 - Spring MVC (cliquez 🖱) [Code source]

Affichage des patients

- Entity Patient
- Patient Repository
- Patient Controller
- Application
- Affichage des patients dans une template Thymeleaf

Pagination

- Génération des données pour faire la pagination
- barre de pagination
- L'ajout des params 'size' et 'page' dans le Controlleur
- Affichage

Recherche

- Patient Repository (ajout de "findByNomContains a keyword")
- Patient Controller (ajout de param keyword)
- Ajout du formulaire de recherche
- L'ajout du mot clé dans le lien, pour naviger entre les pages aprés la recherche par un mot clé
- Affichage

Suppression

- Ajout de lien de suppression (/delete?id) dans la template
- Ajout des paths "/" et "/delete" ("/" pour la redirection)
- Affichage

Ajout

- Ajout des paths "/new" et "/create" dans le controlleur
- Ajout d'un fragement navbar pour l'insérer dans chacune des templates (index/new/update)
- Formulaire de saisie des données de patient
- Affichage
- Vérification

Modification

- Ajout du path "/update" dans le controlleur
- Formulaire de modification des données de patient
- Affichage

Spring Security - inMemoryAuthentication

- Ajout user1 et admin
- Les droits d'acces et login form
- path access denied "/403"

Spring Security - jdbcAuthentication

- Table users
- Table roles
- Table users_role (table d'association)
- Récuperation des users et roles

...

Art for footer readme.md

About

Travaux pratiques JEE

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published