IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Spring et classes utilitaires


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 9
    Par défaut Spring et classes utilitaires
    Bonjour,

    j'initialise mon projet avec Spring.

    J'ai cependant une question : comment initialiser une variable dans une classe utilitaire (contenant uniquement des méthodes statiques) du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public final Tools {
         /**
          * Injectée par Spring
         **/
         private static String path;
     
         private Tools(){
              //constructeur privé pour empecher l'instanciation
         }
     
         public static void setPath(String string){
              PATH = string;
         }
     
     
         public static void do(){
              //methode statique utlisant path
         }

    tout fonctionne en instanciant via <bean> et Spring un objet Tools mais je ne trouve pas cela très propre.

    en effet, Tools étant une classe statique, on ne devrait pas l'instancier (elle devrait même être definie abstract pour empecher vraiment l'instanciation).
    de plus path devrait etre definie en final (c'est une constante). j'ai viré final pour pouvoir l'initialiser avec Spring.

    ya-t-il une solution pour faire plus proprement (classe Tools abstraite, et PATH en constante...) ?

    Merci

  2. #2
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 9
    Par défaut
    personne n'a une idée ?

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Moi j'ai bien plusieurs idées :

    - Un <bean> ça sert à créer un objet ou une fabrique d'objets. Pas à setter des propriétés statiques. Et un applicationContext.xml, ça sert à définir des beans.
    Conclusion, c'est pas le bon outil. Un ServletContextListener qui s'occupe de régler ça, par exemple, serait sûrement plus adapté. Il pourrait lire l'info d'un fichier .properties.
    Dans le même genre, créer un bean sans id, d'une classe qui implémente InitializingBean, et dans son afterPropertiesSet() s'occupe d'appeler la méthode statique. Au fond, ça existe peut-être, mais j'en ai pas trouvé dans la doc. C'est quand même pas top comme usage.

    - Une méthode qui a besoin de configuration préalable pour fonctionner n'a pas à être statique. Elle doit être méthode membre d'une classe instanciée, la configuration étant faite à l'instanciation. L'instance doit être passée à tous ses utilisateurs.
    Bon, c'est vrai qu'il y a des exceptions, comme la configuration du logging. Et elle est faite avec des ServletContextListener. Disons que applicationContext.xml n'est pas conçu pour ça, même si on peut imaginer des cas où il s'agit d'injecter des dépendances.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Tools étant une classe statique
    Moi je commencerais par me poser la question suivante : Tools est-elle une classe statique, si ses propriétés changent ?

    Les beans créés via Spring sont par défaut des singletons, donc il n'en existe qu'une seule instance. Cela remplace avantageusement la classe statique.
    D'ailleurs, le pattern Singleton remplace la classe statique dans de très nombreux cas (tous ?) sans Spring.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 9
    Par défaut
    Bonsoir,

    voila la question static/singleton.

    les proprietes statiques peuvent etre modifié dans l'évolution d'un programme...


    bon pour resoudre, je transforme ma classe static en une classe normal, avec utilisation du singleton initialisé par spring.


    je vais également regarder du coté du ServletContextListener.

    merci

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par polter Voir le message
    les proprietes statiques peuvent etre modifié dans l'évolution d'un programme...
    ... Mais ne doivent pas l'être.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 9
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Il pourrait lire l'info d'un fichier .properties.
    les parametres en question sont bien tiré d'un fichier propertie et charge par Spring via propertyPlaceholder

Discussions similaires

  1. [JavaScript] [SRC] Classe utilitaire pour la manipulation des URLs
    Par Oscar Hiboux dans le forum Contribuez
    Réponses: 8
    Dernier message: 29/09/2018, 17h40
  2. classe utilitaire « hibernateUtil.java »
    Par AmineDev9 dans le forum Hibernate
    Réponses: 1
    Dernier message: 12/06/2009, 09h46
  3. Fonction globales ou classe utilitaire ?
    Par oodini dans le forum C++
    Réponses: 9
    Dernier message: 03/09/2008, 15h16
  4. Classe utilitaire pour les formulaires
    Par sir_gcc dans le forum Zend_Form
    Réponses: 8
    Dernier message: 20/10/2007, 14h39
  5. CComboBox dans une classe utilitaire
    Par BakaOnigiri dans le forum MFC
    Réponses: 3
    Dernier message: 29/12/2006, 18h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo