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 Web Java Discussion :

Comment reinitialiser mes beans (random) ?


Sujet :

Spring Web Java

  1. #1
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2024
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2024
    Messages : 14
    Par défaut Comment reinitialiser mes beans (random) ?
    Bonjour,
    Débutante avec Spring, je me lance dans une application de jeu type Cluedo, mon projet avance bien mais je n'arrive pas a savoir comment faire pour que la partie se relance avec de nouvelles valeurs dans mes beans?
    Voila ma classe "random" avec mes beans:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    @Configuration
     
    public class RandomStart {
     
    	 @Autowired
    	 private   PieceRepository pieceRepository ;
     
    	 @Autowired
    	 private SuspectRepository suspectRepository;
     
    	 @Autowired
    	 private ArmeRepository armeRepository;
     
     
    @Bean (name = "randomPiece")
     Piece randomPiece() {
    	  Piece randomPiece = pieceRepository.findRandomPiece();
        	//System.out.println(randomPiece);
    		return randomPiece;
    	}
    @Bean (name = "randomSuspect")
    	Suspect randomSuspect() {
    		Suspect randomSuspect = suspectRepository.findRandomSuspect();
    		//System.out.println(randomSuspect);
    		return randomSuspect;
    	}
    @Bean (name = "randomArme")
    	Arme randomArme() {
    		Arme randomArme = armeRepository.findRandomArme();
    		//System.out.println(randomArme);
    		return randomArme;
    	}
    Donc en début de partie, les randoms sont sélectionnés, ensuite les joueurs choisissent un lieu, un suspect et une arme (choix stockés dans un local storage), une fois tout trouvé on passe sur une page récap.
    C'est a ce moment la que je bloque, en cliquant sur le bouton retour à l'accueil je vide mon local storage et j'aimerai réinitialiser les randoms pour une nouvelle partie. Mais comment procéder? J'ai lu pas mal de truc : creer un bean.xml, annotations, rajouter dans mon run "@Override
    public void run(String... args) throws Exception "... et j'ai du mal a m'y retrouver.
    J'arrive a récupérer mon random dans mon controller accueil via Application context et je me dit que c'est certainement a ce niveau qu'il faut ajouter une methode ou un appel mais je sèche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Controller
    public class AccueilController {
    	@Autowired
    	private ApplicationContext appContext;
     
    	@GetMapping("/")
    	public String accueil() {
    		Piece beanPiece = appContext.getBean("randomPiece",Piece.class);
     
     
    		System.out.println(beanPiece);
    		return "accueil";
    	}
    Je ne demande pas forcement du code mais au moins une façon de procéder, parce que peut-être la façon dont j'ai fait mes randoms n'est pas approprié.
    Merci de votre aide.

  2. #2
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2024
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2024
    Messages : 14
    Par défaut
    C'est quoi le problème avec ma question? Apparemment si personne ne réponds c'est que j'ai loupé un truc à la noix, qui parait logique pour tous les développeurs confirmés...Bon ben je vais continuer à essayer de trouver la solution toute seule

  3. #3
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 479
    Billets dans le blog
    5
    Par défaut
    Je pense que l'approche n'est pas la bonne.

    Spring, on définit la configuration une bonne fois pour toute, et la configuration Spring ne bouge pas durant la durée de vie de l'application.


    Je me tournerais vers les Design Patter Stratégie/Factory.

    https://refactoring.guru/fr/design-p...y/java/example
    https://www.baeldung.com/java-factory-pattern

    Stratégie étant l'application du Polymorphysme.

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 270
    Par défaut
    Citation Envoyé par chris830 Voir le message
    Apparemment si personne ne réponds c'est que j'ai loupé un truc à la noix, qui parait logique pour tous les développeurs confirmés...
    On peux tous être frustré un jour ou l'autre de pas trouver .
    C'est communautaire , au bon vouloir de chacun de décrypter certaine demande et de prendre le temps de répondre ...


    Cf bas de message
    Un problème sans solution est un problème mal posé. (Albert Einstein)

  5. #5
    Membre chevronné
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 337
    Par défaut
    Bonjour,

    Comme le dit PhilippeGibault, "la configuration Spring ne bouge pas durant la durée de vie de l'application.". Il vous faudrait un service/factory qui utilise les méthodes "random.." pour créer une nouvelle partie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    val game = gameFactory.newGame() // Même contenu que "RandomStart" sans les annotations et qui aggrège le tout dans une classe Game/Partie/...
    Ce qui est étonnant dans votre question c'est que vous parlez de "local storage". Si vous parlez de localStorage dans le navigateur il vous faudra refaire un appel à votre application web pour invoquer "gameFactory.newGame()". Peut-être alors qu'un simple rafraichissement de la page suffit ? Mais, nous ne pouvons pas connaitre le flux de votre application.

Discussions similaires

  1. Comment réinitialiser tout mes beans ?
    Par Chabanus dans le forum JSF
    Réponses: 8
    Dernier message: 02/06/2010, 16h31
  2. Comment réinitialiser tous mes champs
    Par DevServlet dans le forum JSF
    Réponses: 2
    Dernier message: 20/08/2009, 17h41
  3. [netbean 5 dev] comment ajouter Mes elements en visuel
    Par alain57 dans le forum NetBeans
    Réponses: 1
    Dernier message: 14/10/2005, 06h38
  4. comment vider mes tables a la fin
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 9
    Dernier message: 14/05/2005, 12h33
  5. [NetBeans] Comment creer des Beans sous Netbeans 4.0
    Par Turtle dans le forum NetBeans
    Réponses: 2
    Dernier message: 16/01/2005, 21h44

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