Académique Documents
Professionnel Documents
Culture Documents
Spring Boot n’est rien d’autre qu’un framework existant avec l’ajout d’un serveur
Configuration minimale.
Nous n’avons pas besoin d’écrire de configuration XML, seules quelques annotations
Auto Configuration.
Serveur embarqué.
Starter POM.
Actionneurs.
Test Starter.
Security starter.
Web starter.
Mail starter.
Thymeleaf starter.
12. Qu’est-ce que Spring Boot CLI et quels sont ses avantages ?
Spring Boot CLI est une interface en ligne de commande qui vous permet de créer
une application java basée sur Spring à l’aide de Groovy.
13. Quel est le port par défaut de tomcat dans spring boot ?
Le port par défaut du serveur tomcat est 8080. Il peut être modifié en ajoutant la
propriété « sever.port » dans le fichier « application.property ».
15. Peut-on désactiver le serveur web par défaut dans une application
Spring boot ?
Oui, on peut utiliser « application.properties » pour configurer le type
d’application web, c’est-à-dire
spring.main.web-application-type=none
.
16. Comment désactiver l’autoconfiguration pour une classe spécifique?
Vous pouvez utiliser l’attribut « exclude » de « @EnableAutoConfiguration »
si vous souhaitez que l’autoconfiguration ne s’applique pas à une classe
spécifique. Exemple:
@EnableAutoConfiguration(exclude={className})
17. Quel est le moteur de template HTML par défaut dans Spring Boot ?
Thymeleaf
22. A quoi sert l’actionneur dans Spring ? Quels sont ses avantages ?
Un actionneur est une fonctionnalité supplémentaire de Spring qui vous aide à
surveiller et à gérer votre application lorsque vous la mettez en production. Ces
actionneurs comprennent l’audit, la healthcheck, l’utilisation du CPU, les hits
HTTP, la collecte de métriques, et bien d’autres choses encore qui sont
automatiquement appliquées à votre application.
--debug
.
logging.level.root=debug
dans le fichier application.property.
30. Qulles sont Les dépendances nécessaires pour créer une application
web Spring Boot?
A Spring-boot-starter-web
33. Qu'est-ce que Spring Boot et quelles sont ses principales caractéristiques ?
Spring Boot est essentiellement un cadre pour le développement rapide d'applications construit au-
dessus du Spring Framework.
Grâce à son auto-configuration et à la prise en charge du serveur d'application intégré, ainsi qu'à la
documentation complète et au soutien de la communauté, Spring Boot est l'une des technologies les
plus populaires de Java.
et le soutien de la communauté, Spring Boot est l'une des technologies les plus populaires de
l'écosystème Java à ce jour.
Au fil des années, Spring est devenu de plus en plus complexe, et la quantité de configuration qu'une
telle application requiert
peut être intimidante. C'est là que Spring Boot s'avère utile : il facilite la configuration d'une
application Spring.
Essentiellement, alors que Spring n'a pas d'opinion, Spring Boot a une opinion de la plateforme et des
bibliothèques,
ce qui nous permet de démarrer rapidement.
Voici deux des avantages les plus importants apportés par Spring Boot :
+ Auto-configurer les applications en fonction des artefacts qu'il trouve sur le chemin d'accès
(classpath)
+ Fournir des fonctionnalités non fonctionnelles communes aux applications en production, telles que
la sécurité ou les contrôles de santé.
``properties
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfigur
ation
```
36. Comment utiliser Spring Boot pour les applications en ligne de commande ?
Comme tout autre programme Java, une application en ligne de commande Spring Boot doit avoir une
méthode main.
Cette méthode sert de point d'entrée, qui invoque la méthode SpringApplication#run pour démarrer
l'application :
``Java
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class) ;
// autres déclarations
}
}
```
Remarquez que nous devons passer une classe de configuration à la méthode run pour qu'elle serve de
source de configuration primaire.
Par convention, cet argument est la classe d'entrée elle-même.
Après avoir appelé la méthode run, nous pouvons exécuter d'autres instructions comme dans un
programme normal.
Nous pouvons ensuite accéder à ces propriétés à l'aide de l'annotation @Value, d'un objet lié à l'aide
de l'annotation
l'annotation @ConfigurationProperties, ou l'abstraction Environment.
38. Qu'est-ce que cela signifie que Spring Boot supporte le Relaxed Binding ?
La liaison détendue dans Spring Boot s'applique à la liaison sécurisée des propriétés de configuration.
Avec la liaison détendue, la clé d'une propriété n'a pas besoin de correspondre exactement au nom
d'une propriété.
Une telle propriété d'environnement peut être écrite en camelCase, kebab-case, snake_case, ou en
majuscules avec des mots séparés par des underscores.
séparés par des traits de soulignement.
Par exemple, si une propriété dans une classe de haricot avec l'annotation @ConfigurationProperties
est nommée myProp,
elle peut être liée à l'une des propriétés d'environnement suivantes : myProp, my-prop, my_prop ou
MY_PROP.
Lors de l'exécution de tests d'intégration pour une application Spring, nous devons disposer d'un
ApplicationContext.
Pour nous faciliter la tâche, Spring Boot fournit une annotation spéciale pour les tests -
@SpringBootTest.
Cette annotation crée un ApplicationContext à partir des classes de configuration indiquées par son
attribut classes.
Si l'attribut classes n'est pas défini, Spring Boot recherche la classe de configuration primaire.
La recherche commence à partir du paquetage contenant le test jusqu'à ce qu'il trouve une classe
annotée
avec @SpringBootApplication ou @SpringBootConfiguration.
Essentiellement, Actuator donne vie aux applications Spring Boot en activant des fonctionnalités
prêtes pour la production.
Ces fonctionnalités nous permettent de surveiller et de gérer les applications lorsqu'elles fonctionnent
en production.
Voici quelques-uns des points d'extrémité intégrés les plus courants fournis par Actuator :
41. Quelles sont les annotations de base offertes par Spring Boot ?
+ @EnableAutoConfiguration - pour que Spring Boot recherche des beans d'autoconfiguration sur son
classpath et les applique automatiquement.
+ @SpringBootApplication - pour désigner la classe principale d'une application Boot. Cette
annotation combine @Configuration,
@EnableAutoConfiguration et @ComponentScan avec leurs attributs par défaut.
42.Quels sont les serveurs intégrés pris en charge par Spring Boot et comment changer la valeur par
défaut ?
A ce jour, Spring MVC supporte Tomcat, Jetty et Undertow. Tomcat est le serveur d'application par
défaut pris en charge
par le démarreur web de Spring Boot.
Spring WebFlux supporte Reactor Netty, Tomcat, Jetty et Undertow avec Reactor Netty par défaut.
Dans Spring MVC, pour changer la valeur par défaut, disons pour Jetty, nous devons exclure Tomcat
et inclure Jetty dans les dépendances.
43. Quels sont les sous-projets Spring que vous connaissez ? Décrivez-les brièvement.
+ Core - un module clé qui fournit des parties fondamentales du cadre, telles que IoC ou DI
+ JDBC - permet une couche d'abstraction JDBC qui supprime la nécessité de coder JDBC pour les
bases de données d'un fournisseur spécifique.
+ Intégration ORM - fournit des couches d'intégration pour les API de mappage objet-relationnel les
plus répandues, telles que JPA, JDO et Hibernate.
+ Web - un module d'intégration orienté web qui permet le téléchargement de fichiers en plusieurs
parties,
Web - un module d'intégration orienté web qui fournit des fonctionnalités de téléchargement de
fichiers multipartites, d'écoute de servlets et de contexte d'application orienté web
+ Cadre MVC - module web mettant en œuvre le modèle de conception Modèle-Vue-Contrôleur
(MVC)
+ Module AOP - implémentation de la programmation orientée aspect permettant la définition
d'intercepteurs de méthodes et de raccourcis propres.
48. Quelle est la portée par défaut d'un Bean dans Spring Framework ?
Par défaut, un Spring Bean est initialisé en tant que singleton.
49.Comment définir la portée d'un Bean ?
Pour définir la portée d'un Spring Bean, on peut utiliser l'annotation @Scope ou l'attribut "scope" dans
les fichiers de configuration XML. Notez qu'il y a cinq portées supportées :
+ Singleton
+ Prototype
+ Requête
+ Session
+ Session globale
L'annotation @Autowired peut être utilisée avec des champs ou des méthodes pour injecter un bean
par type.
Cette annotation permet à Spring de résoudre et d'injecter des beans collaborateurs dans votre bean.
Elle est utilisée en même temps que l'annotation @Autowired pour éviter toute confusion lorsque
plusieurs instances d'un type de haricot sont présentes.
56. Quelle est la différence entre les annotations @Controller, @Component, @Repository et
@Service dans Spring ?
En termes simples, toutes les demandes traitées par le DispatcherServlet sont dirigées vers des classes
annotées avec @Controller.
Chaque classe de contrôleur associe une ou plusieurs demandes à des méthodes qui traitent et
exécutent les demandes avec les données d'entrée fournies.
Par exemple, si nous voulons récupérer un utilisateur par son identifiant à partir de
www.mysite.com/user/123,
nous devrions mapper notre méthode dans le contrôleur comme /user/{id} :
``Java
@RequestMapping("/user/{id}")
public String handleRequest(@PathVariable("id") String userId, Model map) {}
```
La variable @PathVariable n'a qu'un seul élément nommé value. Il est facultatif et nous l'utilisons
pour définir le nom de la variable du modèle URI.
Si nous omettons l'élément value, le nom de la variable modèle URI doit correspondre au nom du
paramètre de la méthode.
Il est également permis d'avoir plusieurs annotations @PathVariable, soit en les déclarant l'une après
l'autre :
``java
@RequestMapping("/user/{userId}/name/{userName}")
public String handleRequest(@PathVariable String userId,
@PathVariable String userName, Model map) {}
```
ou en les plaçant tous dans une Map<String, String> ou MultiValueMap<String, String> :
``Java
@RequestMapping("/user/{userId}/name/{userName}")
public String handleRequest(@PathVariable Map<String, String> varsMap, Model map) {}}
La JSR-303 est une spécification de l'API Java pour la validation des beans, qui fait partie de Jakarta
EE et de JavaSE, et qui garantit
que les propriétés d'un bean répondent à des critères spécifiques, en utilisant des annotations telles que
@NotNull, @Min et @Max.
L'annotation @RequestBody, utilisée comme paramètre d'une méthode de traitement, lie le corps de la
requête HTTP à un transfert ou à un objet de domaine.
un objet de domaine. Spring désérialise automatiquement les requêtes HTTP entrantes en objets Java à
l'aide des convertisseurs de messages Http.
Lorsque nous utilisons l'annotation @ResponseBody sur une méthode de traitement dans le contrôleur
Spring MVC,
elle indique que nous écrirons le type de retour de la méthode directement dans le corps de la réponse
HTTP.
Nous ne le placerons pas dans un modèle et Spring ne l'interprétera pas comme un nom de vue.
BindingResult est une interface du paquet org.springframework.validation qui représente les résultats
de la liaison.
Nous pouvons l'utiliser pour détecter et signaler les erreurs dans le formulaire soumis.
Il est facile de l'invoquer - nous devons juste nous assurer que nous le plaçons en tant que paramètre
juste après l'objet du formulaire que nous validons.
Le paramètre optionnel Model doit venir après le BindingResult, comme on peut le voir dans le
tutoriel du validateur personnalisé :
``Java
@PostMapping("/user")
public String submitForm(@Valid NewUserForm newUserForm,
BindingResult result, Model model) {
if (result.hasErrors()) {
return "userHome" ;
}
model.addAttribute("message", "Valid form") ;
return "userHome" ;
}
```
Lorsque Spring voit l'annotation @Valid, il essaie d'abord de trouver le validateur de l'objet à valider.
Le modèle Spring JDBC est la principale API qui nous permet d'accéder à la logique des opérations de
base de données qui nous intéressent :
Création et fermeture de connexions
Exécution d'instructions et d'appels de procédures stockées
L'itération sur le ResultSet et le retour des résultats.
Pour l'utiliser, nous devons définir la configuration simple de DataSource :
``java
@Configuration
@ComponentScan("org.baeldung.jdbc")
public class SpringJdbcConfig {
@Bean
public DataSource mysqlDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource() ;
dataSource.setDriverClassName("com.mysql.jdbc.Driver") ;
dataSource.setUrl("jdbc:mysql://localhost:3306/springjdbc") ;
dataSource.setUsername("guest_user") ;
dataSource.setPassword("guest_password") ;
return dataSource ;
}
}
```
65. Comment activer les transactions dans Spring et quels sont leurs avantages ?
Il existe deux façons distinctes de configurer les transactions - avec des annotations
ou en utilisant la Programmation Orientée Aspect (AOP) - chacune avec ses avantages.
+ Fournir un modèle de programmation cohérent entre les différentes API de transaction telles que
JTA, JDBC, Hibernate, JPA et JDO.
+ Prise en charge de la gestion déclarative des transactions
+ Fournir une API plus simple pour la gestion programmatique des transactions que certaines API de
transaction complexes telles que JTA
+ S'intègre très bien avec les différentes abstractions d'accès aux données de Spring.
Spring Data Access Object (DAO) est le support fourni par Spring pour travailler avec des
technologies d'accès aux données telles que JDBC,
Hibernate et JPA de manière cohérente et simple.
@ControllerAdvice est une annotation dans Spring qui permet d'écrire du code global
applicable à une gamme de contrôleurs. Elle peut être appliquée à des packages ou des
classes spécifiques à l'aide de propriétés telles que basePackages ou
basePackageClasses. Cette annotation est souvent utilisée en conjonction avec
@ExceptionHandler pour créer un mécanisme global de gestion des erreurs pour les
exceptions générées par les contrôleurs. L'annotation @ExceptionHandler permet de
définir des méthodes qui gèrent des exceptions spécifiques de manière globale, évitant ainsi
la nécessité de traiter les exceptions dans chaque contrôleur individuellement. Il est
important d'associer l'exception déclarée dans @ExceptionHandler à l'exception réellement
générée pour assurer une gestion appropriée. Plusieurs méthodes @ExceptionHandler
peuvent être définies pour différentes exceptions, offrant ainsi une flexibilité dans la
configuration de la gestion des erreurs.
Nous disposons de trois options pour la gestion des exceptions dans Spring MVC :
+ par exception
+ par contrôleur
+ globalement
Si une exception non gérée est levée pendant le traitement d'une requête web, le serveur renverra une
réponse HTTP 500.
Pour éviter cela, nous devons annoter toutes nos exceptions personnalisées avec l'annotation
@ResponseStatus.
Ce type d'exception est résolu par le HandlerExceptionResolver.
Cela permettra au serveur de renvoyer une réponse HTTP appropriée avec le code d'état spécifié
lorsqu'une méthode du contrôleur
lève notre exception. Nous devons garder à l'esprit que nous ne devons pas gérer notre exception
ailleurs pour que cette approche fonctionne.
Une autre façon de gérer les exceptions est d'utiliser l'annotation @ExceptionHandler.
Nous ajoutons des méthodes @ExceptionHandler à n'importe quel contrôleur et les utilisons pour
gérer les exceptions lancées à l'intérieur de ce contrôleur.
Ces méthodes peuvent gérer les exceptions sans l'annotation @ResponseStatus, rediriger l'utilisateur
vers une vue d'erreur dédiée,
ou construire une réponse d'erreur totalement personnalisée.
Nous pouvons également passer les objets liés au servlet (HttpServletRequest, HttpServletResponse,
HttpSession et Principal)
comme paramètres des méthodes de traitement. Cependant, nous devons nous rappeler que nous ne
pouvons pas mettre l'objet Model en tant que paramètre directement.
La troisième option pour gérer les erreurs est d'utiliser les classes @ControllerAdvice. Elles nous
permettront d'appliquer les mêmes techniques,
mais cette fois au niveau de l'application et pas seulement à un contrôleur particulier.
Gestion des versions
Gestion des versions.
Gestion des version