Visualizzazione dei risultati da 1 a 7 su 7

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331

    [spring] problema con annotation

    Salve a tutti, sto provando ad usare le annotation in spring e la classi con @Autowired ma sto avendo dei problemi.

    Nel file XML del context ho inserito questo:

    codice:
    <context:component-scanbase-package="com.prove"/>
    e ho le seguenti classi:

    Classe A
    codice:
    package com.prove.prove1
    
    @Component
    Class A {
         
           @Autowired
           B b;
    
           public A() {
                b.faiQuesto();
           }
    }
    Classe B
    codice:
    package com.prove.prove1
    
    import com.prove.prove2.C;
    
    @Service
    Class B {
         
           @Autowired
           C c;
    
           public void faiQuesto() {
                c.faiQuello();
           }
    }
    Classe C
    codice:
    package com.prove.prove2
    
    @Service
    Class C {
         
           public void faiQuello() {
                .............
           }
    }
    Quello che io vorrei � che all'avvio del server (installato su tomcat7) venga avviata la classe A che in cascata utilizzi B e C.
    Quello che invece capita � che all'avvio il costruttore della classe A viene istanziato in automatico ma quando chiamo b.faiQuesto(); ho un null pointer exception; da quello che ho letto con gli @Autowired posso usare delle classi senza istanziarle, � corretto?

    Il tutto funziona, invece, se utilizzo quest'altro sistema:

    Classe A
    codice:
    package com.prove.prove1
    
    @Component
    Class A {
         
           B b;
    
           public A() {
                b = B.getInstance();
                b.faiQuesto();
           }
    }
    Classe B
    codice:
    package com.prove.prove1
    
    import com.prove.prove2.C;
    
    Class B {
         
           C c;
    
           private static B b = null;
    
           public static B getInstance() {
                 if (b == null) b = new B();
                 return b;
           }
    
           public void faiQuesto() {
                c = C.getInstance();
                c.faiQuello();
           }
    }
    Classe C
    codice:
    package com.prove.prove2
    
    Class C {
           private static C c = null;
    
           public static C getInstance() {
                 if (c == null) c = new B();
                 return c;
           }
         
           public void faiQuello() {
                .............
           }
    }
    Al di la di voler imparare ad usare gli @Autowired la gestione con i singleton (che funziona) e' comunque un modo corretto di implementare le classi in un server spring?
    Tra le due soluzioni preferirei cmq approfondire quella con le annotation e gli @Autowired (riuscendo quindi a far funzionare in maniera corretta e pulita il caso 1) ) quindi qualsiasi aiuto sara' ben accetto!

    Grazie in anticipo!
    Sandro
    Ultima modifica di DarthSandr; 03-03-2017 a 20:41

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.