Configuration des Intercepteurs et Fichiers Personnalisés dans Spring Boot

L'intégration d'intercepteurs et de fichiers de configuration personnalisés dans Spring Boot permet d'étendre le comportement des applications et de gérer des paramètres spécifiques.

Mise en place d'un Filtre Servlet Personnalisé

Pour déclarer un filtre personnalisé, implémentez l'interface Filter et enregistrez-le via un bean de configuration Spring.


package com.example.app.config;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

@Configuration
public class WebAppConfig {

    @Bean
    public FilterRegistrationBean requestMonitorFilter() {
        FilterRegistrationBean filterBean = new FilterRegistrationBean();
        filterBean.setFilter(new RequestMonitor());
        filterBean.addUrlPatterns("/service/*");
        filterBean.addInitParameter("mode", "debug");
        filterBean.setName("RequestMonitor");
        filterBean.setOrder(1);
        return filterBean;
    }

    public static class RequestMonitor implements Filter {

        @Override
        public void init(FilterConfig config) throws ServletException {
            // Initialisation du filtre
        }

        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                throws IOException, ServletException {
            HttpServletRequest httpRequest = (HttpServletRequest) request;
            System.out.println("Surveillance requête : " + httpRequest.getMethod() + " sur " + httpRequest.getRequestURI());
            chain.doFilter(request, response);
        }

        @Override
        public void destroy() {
            // Libération des ressources
        }
    }
}

Définition de Propriétés Personnalisées

Les propriétés personnalisées sont définies dans le fichier application.properties et injectées dans les composants Spring.


# src/main/resources/application.properties
project.title=Démonstration Technique
project.description=Exemple avancé de configuration

Contrôleur REST avec Injection de Propriétés

Un contrôleur REST peut lire et utiliser les propriétés configurées pour fournir des données dynamiques.


package com.example.app.controller;

import com.example.app.model.UserData;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Value("${project.title}")
    private String projectTitle;

    @Value("${project.description}")
    private String projectDescription;

    @GetMapping("/fetchUser")
    public UserData retrieveUser() {
        UserData userData = new UserData();
        userData.setName("Bob");
        userData.setPassword("encryptedPass");

        System.out.println("Titre : " + projectTitle + ", Description : " + projectDescription);

        return userData;
    }
}

Après démarrage de l'application, une requête vers http://localhost:8080/fetchUser génère la sortie suivante dans la console :


Surveillance requête : GET sur /fetchUser
Titre : Démonstration Technique, Description : Exemple avancé de configuration

Étiquettes: Spring Boot Servlet Filter Configuration Properties Java REST API

Publié le 1 juillet à 22h56