Il @Service non riesce a prelevare le classi @Repository

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Il @Service non riesce a prelevare le classi @Repository

    Ah, tra l'altro, una cosa: l'autowiring con @Autowired per default è obbligatorio.

    Vuol dire che se Spring non riuscisse a iniettare il valore, dovrebbe loggare un bel errore e il contesto NON partirebbe proprio.

    Quindi se l'applicazione ti parte e chiami i controller, NON è quello il problema. Ricordalo.

    Metti un breakpoint su quella riga e guarda bene (!) cosa è null.
  • Re: Il @Service non riesce a prelevare le classi @Repository

    L'oggetto 'clientRepository' è null.
    
                System.out.println(ipClient);
                if(clientRepository==null){
                    System.out.println("clientRepository è certamente null!");
                }
                try{
                    if(clientRepository.trovaClientConIp(ipClient)==null){
                        System.out.println("clientRepository.trovaClientConIp(ipClient) è certamente null!");
                    }
                }catch (Exception e){
                    System.out.println("clientRepository.trovaClientConIp(ipClient) genera un'eccezione.");
                }
    
    
    127.0.0.1
    clientRepository è certamente null!
    clientRepository.trovaClientConIp(ipClient) genera un'eccezione.
    
    
    @Repository
    public class ClientRepository {
    
        GestioneDataOra gestioneDataOra = new GestioneDataOra();
    
        @Autowired
        private JdbcTemplate jdbcTemplate;
    
    
        @Transactional(readOnly=true)
        public Client trovaClientConIp(String ip) {
            try {
                String sql = "SELECT * FROM client WHERE ip=?";
                return jdbcTemplate.queryForObject(sql, new ClientRowMapper(), new Object[]{ip});
            }catch (Exception e){
                return null;
            }
        }
    
    }
    
    Non so come fare un breakpoint su Intellij, se mi spieghi provo ma come vedi è proprio clientRepository ad essere nullo.
    I tipi 'public' e 'private' sono corretti?
  • Re: Il @Service non riesce a prelevare le classi @Repository

    iBaffiPro ha scritto:


    L'oggetto 'clientRepository' è null.
    Ma stiamo parlando proprio esattamente del campo (variabile "di istanza") clientRepository che è annotato @Autowired all'interno di ConteggioVisiteSito ??
    A me pare veramente tanto strano .... perché in teoria non dovrebbe neanche avviarsi l'applicazione.

    Ma ...aspetta ... non è che per caso ........ da qualche parte stai creando tu una istanza del service?
    Un new ConteggioVisiteSito() intendo.
    Così Spring non ne "sa" proprio nulla e non potrebbe farci e iniettarci un bel niente. Questo perlomeno spiegherebbe il null ......

    iBaffiPro ha scritto:


    Non so come fare un breakpoint su Intellij
    Come mettere un breakpoint (e avviare poi in debug) è una delle prime (anzi primissime) cose da imparare a fare con un IDE.
    Scusa la domanda ma come hai fatto finora? Non hai mai "debuggato" nulla?

    Comunque basta fare una semplice ricerca in rete .... non è una cosa così ostica o oscura ...
  • Re: Il @Service non riesce a prelevare le classi @Repository

    Bravissimo! E' proprio quello l'errore!
    In pratica nel controller bisogna avviare il service in qualche modo. Ad intuito:
    1) chiamando un metodo del service
    2) istanziando la classe service con un costruttore

    Il metodo 1 funziona il metodo 2 da problemi all'accesso alle classi repository.
    Se transitando per la tua città vedi delle statue che ti assomigliano pensa a me.
    grazie infinite sei stato davvero in gamba
  • Re: Il @Service non riesce a prelevare le classi @Repository

    iBaffiPro ha scritto:


    2) istanziando la classe service con un costruttore
    Ma infatti NON devi farlo tu. È Spring che crea gli oggetti delle classi annotate @Component, @Service, @Controller, ecc.....

    P.S. la domanda mi viene spontanea: ma hai chiaro come funziona la Dependency Injection in Spring e cosa c'è nel suo contesto? Questo è fondamentale ...
Devi accedere o registrarti per scrivere nel forum
19 risposte