0% ont trouvé ce document utile (0 vote)
79 vues21 pages

Introduction à Spring Boot et Design Patterns

Transféré par

Lembdadelta
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
79 vues21 pages

Introduction à Spring Boot et Design Patterns

Transféré par

Lembdadelta
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Spring Boot

BUT
2023/2024
Fayçal BRAÏKI
[email protected]
Sommaire
I. Introduction à l’écosystème Spring
Introduction à l’écosystème
Spring
• Spring est un framework OpenSource développé par SpringSource
• Spring est un ensemble de composants/modules apparu en mars
2004 avec sa v1
• Aujourd’hui, Spring s’est imposé comme un standard de fait et en est à
la version 6
• Initialement conçu pour Java, il est aujourd’hui aussi disponible pour
d’autres plates-formes comme .NET par ex.
Introduction à l’écosystème
Spring
• Pourquoi Spring ?
• Initialement, J2EE propose la notion d’EJB (Entreprise Java Beans)
qui assez complexe à appréhender pour les développeurs
• Ce sont des composants dont les spécifications ont été édictées
par Sun et qui s’exécutent dans un serveur d’EJB avec obligation
d’implémenter des interfaces du framework
➔conteneur lourd (heavyweight container)
• Face à ces difficultés, l’idée a germé de produire des applications
JEE sans utiliser les EJB
➔Spring
• Spring est associé à la notion de conteneur « léger » (lightweight
container)
• Solution « fullstack » incluant toutes les briques techniques
nécessaires à la production d’applications complètes, « clés en
main »
Introduction à l’écosystème
Spring
Introduction à l’écosystème
Spring
• Éléments constitutifs du framework
• Solution légère basée sur des briques logicielles indépendantes
apportant des solutions techniques unifiées pour la plupart des
difficultés standards rencontrées sur les projets
• Offre des implémentations pour de nombreux design patterns
• De nombreuses librairies d’extension sont également présentes
(REST notamment)
• L’ensemble du framework est disponible sur le repositery central
de Maven
• Le cœur de spring n’a que peu de dépendances externes
• Du fait de sa modularité, seuls les éléments nécessaires à
l’application sont embarqués
➔différence notable avec les conteneurs lourds qui embarquent
l’entièreté des composants
Introduction à l’écosystème
Spring
Composants JEE
Introduction à l’écosystème
Spring
Composants Spring
Introduction à l’écosystème
Spring
• Éléments constitutifs du framework
• Spring peut être embarqué dans des conteneurs de différentes
natures : légers (tomcat) ou lourds (glassfish, jboss,…)
• Spring peut aussi être embarqué dans une application full JEE
➔redondances des composants et fonctionnalités
➔possibilité de déploiement sous WAR plutôt qu’EAR
➔consommation de ressources plus importante
• Spring est utilisable pour des applications « standalone » (lignes
de commande ou avec IHM via swing ou javafx), des applications
serveur ou encore des applications « batch »
• Aujourd’hui SpringBoot est plébiscité pour les projets en
production
• C’est une extension de Spring
• Il permet de préconfigurer l’application et de prendre en charge
la combinaison des frameworks utilisés (choix des versions)
Introduction à l’écosystème
Spring
• Éléments constitutifs du framework
• Les beans : le noyau (Core) Spring contient une brique nommée
Beans
• Elle permet de manipuler des objets et de générer des beans
• À l’origine le terme de bean ou javabean présentait une définition
assez précise sous forme de caractéristiques
• Un bean est un objet java qui devait avoir 5 caractéristiques :
• Public
• Données membres privées
• Constructeur sans argument
• Un getter et un setter par donnée membre
• Implémenter l’interface Serialization à des fins de sérialisation et de
désérialisation (mécanismes utilisés notamment pour les API REST
afin de convertir des objets JAVA en flux transmissibles sur un réseau
particulièrement sous la forme de fichiers JSON ou XML)
Introduction à l’écosystème
Spring
• Éléments constitutifs du framework
• Les beans : le noyau (Core) Spring contient une brique nommée
Beans
• Cette notion de bean se rapproche de celle de POJO (Plain Old Java
Object) qui présente les mêmes caractéristiques à l’exception de
l’implémentation de l’interface Serialization
• Progressivement, ces différentes expression sont devenues quasi
équivalente afin de désigner un objet Java
• Dans Spring, les beans sont ajoutés dans le contexte de l’application
qui sont donc gérés par le conteneur IoC du framework
• Cependant, tous les beans ne sont pas à définir dans le contexte de
l’application : la couche d’accès aux données, les contrôleurs
notamment sont pertinents
• La couché métier elle n’apparaît pas comme pertinente à déclarer en
tant que métadonnées dans le contexte de l’application
Introduction à l’écosystème
Spring
• Éléments constitutifs du framework

<?xml version="1.0" encoding="UTF-8"?>


<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="..." class="...">


<!-- collaborators and configuration for this bean go here -->
</bean>

<bean id="..." class="...">


<!-- collaborators and configuration for this bean go here -->
</bean>
</beans>
Introduction à l’écosystème
Spring
• Éléments constitutifs du framework
• Un bean est invocable par méthode getBean(« nom_du_bean »)
liée au contexte
• Les beans disposent d’un scope ou portée :
• Singleton (par défaut) : une seule instance du bean existe dans le
conteneur
• Prototype : une instance par invocation du bean
• Request : le cycle de vie du bean est lié à celui d’une requête
HTTP
• Session : le cycle de vie du bean est lié à celui d’une session HTTP
• Application : le cycle de vie du bean est lié à celui d’un
ServletContext
• Websocket : le cycle de vie du bean est lié à celui d’une
websocket
Introduction à l’écosystème
Spring
• Éléments constitutifs du framework
• Un bean est aussi configurable directement en JAVA via des annotations
• Dans la pratique, les 2 (configuration XML et configuration JAVA) sont souvent
utilisés de manière complémentaire dans les projets
➔contexte de l’application (applicationContext.xml) allégé
• L’injection des annotations est réalisée AVANT l’injection du fichier XML
➔la configuration XML l’emporte donc sur les annotations
• Exemple :
package monpack;
@Configuration
public class maClasse{
@Bean//permet de déclarer un bean. Ici le bean est injecté
public monService myService(){
return monimpl();
}
}
Introduction à l’écosystème
Spring
• Spring et les design patterns
• Dans l’univers java et dans l’écosystème spring, beaucoup de
fonctionnalités techniques sont déjà existantes
➔travail d’assemblage de ces briques via le framework
➔production de code réutilisable
• Spring est très largement orienté design patterns
Introduction à l’écosystème
Spring
• Spring et les design patterns
• Le singleton (objet unique dans un espace donné) sous forme de
bean via les annotations Spring @Bean, @Component, @Service
ou @Repositery
• L’Inversion de Contrôle ou IoC (Inversion of Control) : les classes
qui implémentent des fonctionnalités ne sont pas instanciées et
appelées par l’application.
➔appel à une librairie qui lui est fournie automatiquement par le
framework via une fabrique d’objets (factory) :
List<String> liste = new ArrayList<String>();
UtilisateurDao dao=
(UtilisateurDao)factory.getBean(« utilisateurDao »);
• L’utilisation de l’IoC sera invoquée via les annotations @Autowired ou
@Inject
• Dans Spring, tous les beans sont des singletons
Introduction à l’écosystème
Spring
• Spring et les design patterns
• L’injection de dépendances (DI) : mécanisme d’implémentation de
l’IoC
• A chaque « câblage » entre beans, une interface qui correspond à
un constructeur ou à un setter sera proposé
• L’injection peut se faire selon 2 modalités :
• Par le constructeur :
public class PersonneService {
private PersonneDao personneDao;
public PersonneService(PersonneDao personneDao) {
this.personneDao = personneDao; }
}
Introduction à l’écosystème
Spring
• Spring et les design patterns
• L’injection de dépendances (DI) : mécanisme d’implémentation de
l’IoC
• A chaque « câblage » entre beans, une interface qui correspond à
un constructeur ou à un setter sera proposé
• L’injection peut se faire selon 2 modalités :
• Par un setter :
public class PersonneService {
private PersonneDao personneDao;
public void setPersonneDao(PersonneDao personneDao) {
this.personneDao = personneDao; }
}
Introduction à l’écosystème
Spring
• Spring et les design patterns
• La fabrique ou factory : Spring utilise un modèle de fabrique
(factory) pour créer des beans à l’aide d’une référence au
contexte applicatif
• Application-Context lui est préféré : il contient tous les éléments
de configuration de l’application et les références des objets
gérés (beans)
• Ex. :
BeanFactory factory = new XmlBeanFactory (new
FileSystemResource(« spring.xml »));
UtilisateurDao dao=
(UtilisateurDao)factory.getBean(« utilisateurDao »);
Introduction à l’écosystème
Spring
• Spring et les design patterns
• Modèle Vue Contrôleur (MVC)
le contrôleur suivant sera sollicité sur l’url /list.htm demandera
l’affichage de la vue affichage.jsp
@Controller
public class MenagerieController {
@RequestMapping("/list.htm")
public ModelAndView list(HttpServletRequest request,
HttpServletResponse response) throws Exception {

return new ModelAndView("affichage").addObject("tableau",


liste);
}

}
Introduction à l’écosystème
Spring
• Spring et les design patterns
• Les templates :
• Spring utilise massivement les templates pour toutes les
opérations génériques.
• En voici quelques uns :
• JdbcTemplate
RestTemplate
• NamedParameterJdbcTemplate
• HibernateTemplate
• Etc…

Vous aimerez peut-être aussi