Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [Vaadin/Spring Boot] Problema con service

    ciao!

    sostanzialmente ho questo problema con spring boot, anche sto usando vaadin:
    codice:
    There was an exception while trying to navigate to '' with the root cause 'java.lang.NullPointerException: Cannot invoke "org.vaadin.example.services.PersonaService.getAll()" because "this.personaService" is null'
    ho aggiungo nell'application proberties la connessione.
    ho installato queste due dipendenze:
    codice:
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
    
    
        <dependency>
          <groupId>com.mysql</groupId>
          <artifactId>mysql-connector-j</artifactId>
          <scope>runtime</scope>
        </dependency>
    questo il mio service:
    codice:
    package org.vaadin.example.services;
    
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.stereotype.Service;
    import org.vaadin.example.entities.Persona;
    
    
    import java.util.ArrayList;
    import java.util.List;
    
    
    @Service
    public class PersonaService {
    
    
      @Autowired
      private JdbcTemplate jdbcTemplate;
    
    
      public List<Persona> getAll() {
        try {
          return jdbcTemplate.query(
              "SELECT * FROM persone",
              (rs, rowNum) -> new Persona(
                  rs.getInt("id"),
                  rs.getString("noma"),
                  rs.getString("email")
              )
          );
        } catch (Exception e) {
          return new ArrayList<>();
        }
      }
    
    
    }
    e poi nel controller:
    codice:
    package org.vaadin.example;
    
    
    import com.vaadin.flow.component.grid.Grid;
    import com.vaadin.flow.component.grid.GridVariant;
    import com.vaadin.flow.component.grid.dataview.GridListDataView;
    import com.vaadin.flow.component.html.Div;
    import com.vaadin.flow.component.orderedlayout.FlexComponent.Alignment;
    import com.vaadin.flow.component.html.Span;
    import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
    import com.vaadin.flow.data.renderer.ComponentRenderer;
    import com.vaadin.flow.router.Route;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.vaadin.example.entities.Persona;
    import org.vaadin.example.services.PersonaService;
    
    
    @Route
    public class MainView extends Div {
    
    
      private Grid<Persona> grid;
    
    
      @Autowired
      private PersonaService personaService;
    
    
      public MainView() {
        createGrid();
        add(grid);
      }
    
    
      private void createGrid() {
        grid = new Grid<>();
        grid.addThemeVariants(GridVariant.LUMO_NO_BORDER, GridVariant.LUMO_COLUMN_BORDERS);
        grid.setHeight("100%");
        grid.setItems(personaService.getAll());
    
    
    	..............
      }
    
    
    
    
    }
    ma non riesco a capire il perchè di quell'errore!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    ma non riesco a capire il perchè di quell'errore!
    Non so nulla, purtroppo, di Vaadin (quindi posso dire poco) ma il problema perlomeno è chiaro. Quel field personaService resta a null e vuol dire che quel @Autowired NON sta facendo il suo lavoro e probabilmente la istanza di MainView non viene trattata come "bean" Spring.

    Cosa dovrebbe fare quel @Route? E come è integrato in Spring (se lo è)?

    Il resto, cioè le due dipendenze indicate e PersonaService sono corretti e non è lì il problema.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ciao!

    allora, il progetto l'ho creato con lo starter ufficiale, e visto che è un progetto di test l'ho cancellato e ricreato.
    avevo gli stessi problemi, ma ho capito che erano errori di configurazione iniziale.

    ad esempio nel pom mi ha fatto aggiungere un driver per mariadb, ed invece dovevo aggiungere questo:
    codice:
        <dependency>
          <groupId>com.mysql</groupId>
          <artifactId>mysql-connector-j</artifactId>
          <scope>runtime</scope>
        </dependency>
    poi alcune cose nell'application.properties relativo al db:
    codice:
    # DB configuration.
    spring.datasource.url=jdbc:mysql://HOST:3306/DB_NOME
    spring.datasource.username=USER
    spring.datasource.password=PWD
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.defer-datasource-initialization=true
    spring.sql.init.mode=always
    adesso funziona tutto.

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.