5. Confidentiel Propriété Meritis
C’est un framework qui facilite le développement
5
Réponse en Entretien
C’est
magique
C’est pour faire des applications web
C’est une implémentation Jakarta EE
6. Confidentiel Propriété Meritis
C’est un conteneur IoC : Inversion of Control
6
Qu’est ce que Spring-core au final ?
Code Applicatif
Librairie
Framework
8. Confidentiel Propriété Meritis
8
Quel type d’Inversion de contrôle ?
Dépendance et couplage faible
DAO
Service
Controller
Reutilisabilité
Testabilité
Modifiable
10. Confidentiel Propriété Meritis
10
Application context est une Factory
Scan des dépendances à créer
Via @Qualifier (API)
Via @Service, @Component,
@Repository
Controller.class Service.class
Dao.class
Scan de la méthode
d’injection
Via @Inject (API)
Via @Autowired
(Privilégié par constructeur)
Utilisation de la réflexivité
pour créer les dépendances et
les référencer dans le contexte
via son type et son nom
12. Confidentiel Propriété Meritis
Nos dépendances sont créées via Spring, on peut leur donner un Scope qui va définir leur cycle de
vie.
La factory va aussi scanné l’annotation @Scope afin de determiner le cycle de vie choisit.
12
Et si on déléguait plus de chose à Spring ?
Singleton
Une seule instance de la dépendance
sera créée et injecté à chaque demande
de dépendance.
Elle vivra tant que le contexte spring
vivra.
Prototype
Une seule sera créé à chaque demande
de dépendances.
Spring ne garde aucune référence à une
instance crée et ne gére donc pas son
cycle de vie.
WebAware
scope
Des scopes spécifiques au context web
dans les cycles de vies dépendent du
type de scope.
Par exemple le request scope créera
une instance qui ne vivra que le temps
de la requête
14. Confidentiel Propriété Meritis
Puisque l’on a un conteneur d’inversion de contrôle, pourquoi ne pas lui donner des taches
techniques et répétitives pour que l’on se concentre sur le métier ?
Ex : @Transactional
14
Encore plus de délégation à Spring ?
Spring begin Trans Spring end Trans
Code Applicatif
Code applicatif Code applicatif
Lib ou Api
Transaction
Comment Spring fait ?
17. Confidentiel Propriété Meritis
Spring-core est un conteneur IoC :
Il va créer nos dépendances grâce à l’injection de dépendance.
Il va gérer leur cycle de vie.
Ces dépendances vont être proxyfié afin de faciliter l’ajout de fonctionnalité technique
17
Spring-core
19. Confidentiel Propriété Meritis
19
Spring Web
DispatcherServlet
Controller
Controller
http request
@RestController
@RequestMapping("/controller1")
@RestController
@RequestMapping("/controller2")
Request sur
/controller1
Request sur
/controller2
Service1 Etc …
20. Confidentiel Propriété Meritis
JdbcTemplate => Template de Méthode
20
Spring Jdbc
Template démarre la
session JDBC
Preparation du prepare
statement et execution
Code applicatif fournit la requête
et paramêtre
Récupération
ResultSet
Fin de la sessionretourne le
résultat du mapping
Code applicatif fournit le
rowmapper
21. Confidentiel Propriété Meritis
21
Spring Security
DispatcherServlet
Sécurité Chain => Chaine de resposabilité
CorsFilter
ExceptionTrans
altionfilter
JwtFilter AuthenticationFilter
22. Confidentiel Propriété Meritis
Spring Boot avec le principe d’auto-configuration pousse au maximum tout ce que le framework
prend en charge.
Dans le cas d’une application Web qui utilisera une base de donnée, il suffira de mettre les propriétés
(host, login, mdp) de la base de donnée, les controllers et les services métier.
Spring s’occupera de créer la DataSource à notre place, l’injecter dans nos Repository JPA qui eux
même recevront une implémentation fournit par Spring, il construira les dépendances juqu’aux
RestController qui seront référencer dans la DispatcherServlet qui elle-même sera déclaré dans un
conteneur de Servlet qui sera démarrer.
22
Sprint Boot