Non riesco a capire la webapp hello-springboot

di il
31 risposte

31 Risposte - Pagina 2

  • Re: Non riesco a capire la webapp hello-springboot

    Ovviamente ho provato a lanciare questo da MySQL Workbench:
    
    CREATE DATABASE test;
    USE test;
    CREATE TABLE user (
    	id INT NOT NULL AUTO_INCREMENT,
    	name VARCHAR(255) NOT NULL,
    	PRIMARY KEY (id)
    );
    SET SQL_SAFE_UPDATES = 0;
    e anche a creare il file schema.sql... ma nulla...
  • Re: Non riesco a capire la webapp hello-springboot

    giannino1995 ha scritto:


    e anche a creare il file schema.sql... ma nulla...
    La documentazione dice:

    In a JPA-based app, you can choose to let Hibernate create the schema or use schema.sql, but you cannot do both. Make sure to disable spring.jpa.hibernate.ddl-auto if you use schema.sql.

    spring.jpa.hibernate.ddl-auto=none


    Quindi se vuoi usare lo schema.sql, va messo none. Punto. E schema.sql/data.sql vengono cercati per default alla "radice" in classpath. Ovvero con Maven vanno direttamente nella /resources
  • Re: Non riesco a capire la webapp hello-springboot

       
       ...
       
       ErrorMvcAutoConfiguration matched:
          - @ConditionalOnClass found required classes 'javax.servlet.Servlet', 'org.springframework.web.servlet.DispatcherServlet'; @ConditionalOnMissingClass did not find unwanted class (OnClassCondition)
          - found ConfigurableWebEnvironment (OnWebApplicationCondition)
    
       ErrorMvcAutoConfiguration#basicErrorController matched:
          - @ConditionalOnMissingBean (types: org.springframework.boot.web.servlet.error.ErrorController; SearchStrategy: current) did not find any beans (OnBeanCondition)
    
       ErrorMvcAutoConfiguration#errorAttributes matched:
          - @ConditionalOnMissingBean (types: org.springframework.boot.web.servlet.error.ErrorAttributes; SearchStrategy: current) did not find any beans (OnBeanCondition)
    
       ErrorMvcAutoConfiguration.DefaultErrorViewResolverConfiguration#conventionErrorViewResolver matched:
          - @ConditionalOnBean (types: org.springframework.web.servlet.DispatcherServlet; SearchStrategy: all) found bean 'dispatcherServlet'; @ConditionalOnMissingBean (types: org.springframework.boot.autoconfigure.web.servlet.error.DefaultErrorViewResolver; SearchStrategy: all) did not find any beans (OnBeanCondition)
    
       ErrorMvcAutoConfiguration.WhitelabelErrorViewConfiguration matched:
          - @ConditionalOnProperty (server.error.whitelabel.enabled) matched (OnPropertyCondition)
          - ErrorTemplate Missing did not find error template view (ErrorMvcAutoConfiguration.ErrorTemplateMissingCondition)
    
       ErrorMvcAutoConfiguration.WhitelabelErrorViewConfiguration#beanNameViewResolver matched:
          - @ConditionalOnMissingBean (types: org.springframework.web.servlet.view.BeanNameViewResolver; SearchStrategy: all) did not find any beans (OnBeanCondition)
    
       ErrorMvcAutoConfiguration.WhitelabelErrorViewConfiguration#defaultErrorView matched:
          - @ConditionalOnMissingBean (names: error; SearchStrategy: all) did not find any beans (OnBeanCondition)
          
          ...
          
          2020-07-17 21:09:22.662 ERROR 11068 --- [  restartedMain] o.s.boot.SpringApplication               : Application run failed
          
          ...
    
    Grazie, quello è un altro errore ma ce ne sono ancora altri. Invece di settare a none si può anche togliere la specifica. "spring.jpa.hibernate.ddl-auto" definisce le modalità di gestione dello schema del DBMS. Il valore predefinito è "create-drop" quando si utilizza un database incorporato (embedded database, come ad esempio H2) e non è stato rilevato alcun gestore dello schema ovvero manca il file 'schema.sql' in 'resources'. Altrimenti, il valore predefinito è "none".
  • Re: Non riesco a capire la webapp hello-springboot

    Se ricreo il progetto con https://start.spring.io con l'ultimissima versione di Spring Boog e JDK ottengo questo errore:
    C:\JAVA\jdk-14.0.1\bin\java.exe -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1.2\lib\idea_rt.jar=62316:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1.2\bin" -Dfile.encoding=UTF-8 -classpath C:\DATI\IntelliJ\01-hello-springboot\target\classes;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-data-jpa\2.4.0-SNAPSHOT\spring-boot-starter-data-jpa-2.4.0-20200717.195013-207.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-aop\2.4.0-SNAPSHOT\spring-boot-starter-aop-2.4.0-20200717.195013-207.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-aop\5.3.0-M1\spring-aop-5.3.0-M1.jar;C:\Users\DELL\.m2\repository\org\aspectj\aspectjweaver\1.9.5\aspectjweaver-1.9.5.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\2.4.0-SNAPSHOT\spring-boot-starter-jdbc-2.4.0-20200717.195013-207.jar;C:\Users\DELL\.m2\repository\com\zaxxer\HikariCP\3.4.5\HikariCP-3.4.5.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-jdbc\5.3.0-M1\spring-jdbc-5.3.0-M1.jar;C:\Users\DELL\.m2\repository\jakarta\transaction\jakarta.transaction-api\1.3.3\jakarta.transaction-api-1.3.3.jar;C:\Users\DELL\.m2\repository\jakarta\persistence\jakarta.persistence-api\2.2.3\jakarta.persistence-api-2.2.3.jar;C:\Users\DELL\.m2\repository\org\hibernate\hibernate-core\5.4.18.Final\hibernate-core-5.4.18.Final.jar;C:\Users\DELL\.m2\repository\org\jboss\logging\jboss-logging\3.4.1.Final\jboss-logging-3.4.1.Final.jar;C:\Users\DELL\.m2\repository\org\javassist\javassist\3.24.0-GA\javassist-3.24.0-GA.jar;C:\Users\DELL\.m2\repository\net\bytebuddy\byte-buddy\1.10.12\byte-buddy-1.10.12.jar;C:\Users\DELL\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\DELL\.m2\repository\org\jboss\jandex\2.1.3.Final\jandex-2.1.3.Final.jar;C:\Users\DELL\.m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;C:\Users\DELL\.m2\repository\org\dom4j\dom4j\2.1.3\dom4j-2.1.3.jar;C:\Users\DELL\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.1.0.Final\hibernate-commons-annotations-5.1.0.Final.jar;C:\Users\DELL\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.3\jaxb-runtime-2.3.3.jar;C:\Users\DELL\.m2\repository\org\glassfish\jaxb\txw2\2.3.3\txw2-2.3.3.jar;C:\Users\DELL\.m2\repository\com\sun\istack\istack-commons-runtime\3.0.11\istack-commons-runtime-3.0.11.jar;C:\Users\DELL\.m2\repository\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;C:\Users\DELL\.m2\repository\org\springframework\data\spring-data-jpa\2.4.0-M1\spring-data-jpa-2.4.0-M1.jar;C:\Users\DELL\.m2\repository\org\springframework\data\spring-data-commons\2.4.0-M1\spring-data-commons-2.4.0-M1.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-orm\5.3.0-M1\spring-orm-5.3.0-M1.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-context\5.3.0-M1\spring-context-5.3.0-M1.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-tx\5.3.0-M1\spring-tx-5.3.0-M1.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-beans\5.3.0-M1\spring-beans-5.3.0-M1.jar;C:\Users\DELL\.m2\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-aspects\5.3.0-M1\spring-aspects-5.3.0-M1.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-thymeleaf\2.4.0-SNAPSHOT\spring-boot-starter-thymeleaf-2.4.0-20200717.195013-207.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter\2.4.0-SNAPSHOT\spring-boot-starter-2.4.0-20200717.195013-207.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.4.0-SNAPSHOT\spring-boot-starter-logging-2.4.0-20200717.195013-207.jar;C:\Users\DELL\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\DELL\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Users\DELL\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;C:\Users\DELL\.m2\repository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;C:\Users\DELL\.m2\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;C:\Users\DELL\.m2\repository\org\yaml\snakeyaml\1.26\snakeyaml-1.26.jar;C:\Users\DELL\.m2\repository\org\thymeleaf\thymeleaf-spring5\3.0.11.RELEASE\thymeleaf-spring5-3.0.11.RELEASE.jar;C:\Users\DELL\.m2\repository\org\thymeleaf\thymeleaf\3.0.11.RELEASE\thymeleaf-3.0.11.RELEASE.jar;C:\Users\DELL\.m2\repository\org\attoparser\attoparser\2.0.5.RELEASE\attoparser-2.0.5.RELEASE.jar;C:\Users\DELL\.m2\repository\org\unbescape\unbescape\1.1.6.RELEASE\unbescape-1.1.6.RELEASE.jar;C:\Users\DELL\.m2\repository\org\thymeleaf\extras\thymeleaf-extras-java8time\3.0.4.RELEASE\thymeleaf-extras-java8time-3.0.4.RELEASE.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.4.0-SNAPSHOT\spring-boot-starter-web-2.4.0-20200717.195013-207.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.4.0-SNAPSHOT\spring-boot-starter-json-2.4.0-20200717.195013-207.jar;C:\Users\DELL\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.11.1\jackson-databind-2.11.1.jar;C:\Users\DELL\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.11.1\jackson-annotations-2.11.1.jar;C:\Users\DELL\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.11.1\jackson-core-2.11.1.jar;C:\Users\DELL\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.1\jackson-datatype-jdk8-2.11.1.jar;C:\Users\DELL\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.1\jackson-datatype-jsr310-2.11.1.jar;C:\Users\DELL\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.1\jackson-module-parameter-names-2.11.1.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-web\5.3.0-M1\spring-web-5.3.0-M1.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-webmvc\5.3.0-M1\spring-webmvc-5.3.0-M1.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-expression\5.3.0-M1\spring-expression-5.3.0-M1.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-devtools\2.4.0-SNAPSHOT\spring-boot-devtools-2.4.0-20200717.195013-207.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot\2.4.0-SNAPSHOT\spring-boot-2.4.0-20200717.195013-207.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.4.0-SNAPSHOT\spring-boot-autoconfigure-2.4.0-20200717.195013-207.jar;C:\Users\DELL\.m2\repository\com\h2database\h2\1.4.200\h2-1.4.200.jar;C:\Users\DELL\.m2\repository\mysql\mysql-connector-java\8.0.20\mysql-connector-java-8.0.20.jar;C:\Users\DELL\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.4.0-SNAPSHOT\spring-boot-starter-tomcat-2.4.0-20200717.195013-207.jar;C:\Users\DELL\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\DELL\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.36\tomcat-embed-core-9.0.36.jar;C:\Users\DELL\.m2\repository\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;C:\Users\DELL\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.36\tomcat-embed-websocket-9.0.36.jar;C:\Users\DELL\.m2\repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;C:\Users\DELL\.m2\repository\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-core\5.3.0-M1\spring-core-5.3.0-M1.jar;C:\Users\DELL\.m2\repository\org\springframework\spring-jcl\5.3.0-M1\spring-jcl-5.3.0-M1.jar com.apress.demo.Application
    Java HotSpot(TM) 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::       (v2.4.0-SNAPSHOT)
    anche con H2 DB.
  • Re: Non riesco a capire la webapp hello-springboot

    giannino1995 ha scritto:


    Java HotSpot(TM) 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
    Questo è solo un warning (e non c'entra neanche con Spring Boot ma con le opzioni della JVM).

    Ma davvero ti blocchi su queste cose??
  • Re: Non riesco a capire la webapp hello-springboot

    Dunque dov'è il mio errore? Perché l'esercitazione non si connette a MySQL?
  • Re: Non riesco a capire la webapp hello-springboot

    giannino1995 ha scritto:


    Dunque dov'è il mio errore? Perché l'esercitazione non si connette a MySQL?
    Eh .. non saprei ora ... non ho la sfera di cristallo, bisognerebbe vedere bene tutto il progetto. Hai modo di condividerlo in qualche maniera?
  • Re: Non riesco a capire la webapp hello-springboot

    Certamente, ecco lo script che sto analizzando:
    https://github.com/Apress/beg-spring-boot-2/tree/master/chapter-01/hello-springboot
    Vado a dormire, a domani
  • Re: Non riesco a capire la webapp hello-springboot

    giannino1995 ha scritto:


    https://github.com/Apress/beg-spring-boot-2/tree/master/chapter-01/hello-springboot
    Sì, conosco quel repo di Apress .... il libro ce l'ho anch'io! Ma non saprei se hai fatto modifiche .. pasticciato il codice o che altro.

    Comunque, ho fatto un clone con Fork (client git che uso) di tutto quel repo e poi sono andato nel chapter-01\hello-springboot. Quindi prendendo esattamente quel progetto come è ..

    Premesse:
    - Oracle JDK 8 build 241
    - Maven 3.6.3
    - niente IDE, tutto da prompt
    - per la prova 2, ho il MySQL Community Server 8.0.20

    Prova 1) (db h2)

    Lancio:
    mvn spring-boot:run

    Il codice compila tutto bene e si avvia SENZA alcun errore. In particolare dai log vedo:
    -----------------------
    2020-07-18 09:59:40.602 INFO 6204 --- [ restartedMain] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
    Hibernate: create table user (id integer not null, name varchar(255), primary key (id))
    Hibernate: create sequence hibernate_sequence start with 1 increment by 1
    2020-07-18 09:59:41.368 INFO 6204 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
    2020-07-18 09:59:41.486 INFO 6204 --- [ restartedMain] o.s.jdbc.datasource.init.ScriptUtils : Executing SQL script from URL [file:/R:/Prove/beg-spring-boot-2/chapter-01/hello-springboot/target/classes/data.sql]
    2020-07-18 09:59:41.498 INFO 6204 --- [ restartedMain] o.s.jdbc.datasource.init.ScriptUtils : Executed SQL script from URL [file:/R:/Prove/beg-spring-boot-2/chapter-01/hello-springboot/target/classes/data.sql] in 7 ms.
    -----------------------

    Vuol dire che con H2 Hibernate ha creato la tabella (e una sequence per il id) partendo dalla ENTITY. Nota quel varchar(255), è per quanto dicevo prima: la entity non è "accurata" nella descrizione della tabella, quindi prende un default di 255 caratteri.
    E poi ha letto il file data.sql ed applicato lo script.

    Vado da browser sul localhost:8080 e la pagina mostra i 3 utenti.
    Quindi: FUNZIONA


    Prova 2) (db MySQL)

    - Creo "a mano" il database "test" su MySQL (uso un client HeidiSQL)
    - Modifico "a mano" il file application-prod.properties SOLO per cambiare la password di root

    Lancio:
    mvn spring-boot:run -Dspring-boot.run.profiles=prod

    L'applicazione subito NON si avvia, dai log vedo:
    -----------------------
    Sat Jul 18 10:25:26 CEST 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
    2020-07-18 10:25:28.075 ERROR 11436 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.

    java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.
    -----------------------

    Scopro (su StackOverflow qui) che è un problema dovuto al fatto che nel MySQL 8.0.4 è stato cambiato il plugin di autenticazione.

    Il progetto così come è usa un Connector/J meno recente:

    mysql:mysql-connector-java:jar:5.1.45

    Quindi dato che ho il MySQL 8.x ho deciso di aggiornare il Connector/J, basta mettere:

    <mysql.version>8.0.21</mysql.version>

    in <properties> nel pom.xml. Poi però c'è da cambiare la classe del driver perché nel Connector/J 8 è cambiata:

    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

    Rilancio il comando di run. Continua a non funzionare ma per una cosa che mi stavo dimenticando (e che avevo già notato):

    java.sql.SQLException: The server time zone value 'ora legale Europa occidentale' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.

    Anche qui è una questione di cambiamenti fatti nel MySQL. La soluzione è semplice:

    spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC

    Rilancio e va molto meglio. Dai log vedo:
    -----------------------
    2020-07-18 10:49:23.828 INFO 4436 --- [ restartedMain] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
    Hibernate: create table hibernate_sequence (next_val bigint) engine=MyISAM
    Hibernate: insert into hibernate_sequence values ( 1 )
    Hibernate: create table user (id integer not null, name varchar(255), primary key (id)) engine=MyISAM
    -----------------------

    Ma NON vedo dai log la lettura del data.sql. Infatti se vado su localhost:8080 ho la pagina ma VUOTA, non ci sono utenti elencati.


    Conclusione: mi FUNZIONA "quasi" tutto, salvo il fatto che con MySQL non ha preso il data.sql.
    E tutto questo comunque mi ha preso meno di 1 ora di tempo.


    EDIT: e la cosa curiosa (dovrei andare a documentarmi) è che con MySQL Hibernate non ha creato il id auto_increment ma si è fatto una tabella simil-sequence.
  • Re: Non riesco a capire la webapp hello-springboot

    Grazie per il tuo tempo.
    Oggi ho creato un nuovo progetto con lo stesso nome da start.spring.io in modo da ricreare l'applicazione con tutte le dipendenze aggiornate all'ultimissima versione.
    Sul mio IntelliJ funziona tutto quanto, sia H2 che MySQL ma non riesco a scrivere schema.sql e data.sql dalla WebApp e non riesco ad usare H2 quando schema.sql è presente nella cartella resouces del progetto.
    CONFIGURAZIONE 1 (funziona la 100%)
    application.properties
    
    logging.level.org.springframework=INFO
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.show-sql=true
    
    Application.java
    
    package apress.hellospringboot;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Profile;
    @SpringBootApplication
    public class Application {
    	public static void main(String[] args) {
    		SpringApplication.run(Application.class, args);
    	}
    
    }
    
    CONFIGURAZIONE 2 (funziona la 50%)
    application-prod.properties
    
    logging.level.org.springframework=INFO
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
    spring.datasource.username=root
    spring.datasource.password=admin
    spring.datasource.initialization-mode=always
    spring.datasource.continue-on-error=true
    spring.jpa.hibernate.ddl-auto=none
    spring.jpa.show-sql=true
    
    application.properties
    
    logging.level.org.springframework=INFO
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.show-sql=true
    spring.profiles.active=prod
    
    Application.java
    
    package apress.hellospringboot;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Profile;
    @SpringBootApplication
    @Profile("prod")
    public class Application {
    	public static void main(String[] args) {
    		SpringApplication.run(Application.class, args);
    	}
    
    }
    
    Perché Spring Boot legge ma non scrive nel DBMS? Ci sarà qualche altra specifica da aggiungere?
    Perché la presenza di schema.sql non fa partire H2?
    schema.sql
    
    CREATE DATABASE test;
    USE test;
    CREATE TABLE user (
    	id INT NOT NULL AUTO_INCREMENT,
    	name VARCHAR(255) NOT NULL,
    	PRIMARY KEY (id)
    );
    SET SQL_SAFE_UPDATES = 0;
    
    Questa esercitazione è importantissima perché caricare lo schema e i dati nel DBMS in modo automatico qualora assenti evita al programmatore l'onere di fare tutto autonomamente accedendo al database. Devo assolutamente capire!
  • Re: Non riesco a capire la webapp hello-springboot

    Ho risolto il problemino con schema.sql con spring.datasource.platform ma resta il problema che non riesco a scrivere nulla nel DBMS.
  • Re: Non riesco a capire la webapp hello-springboot

    Https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html
    Qui sopra si parla anche di:
    spring.jpa.generate-ddl
    spring.batch.initialize-schema
    spring.integration.jdbc.initialize-schema
    bisognerà configurare anche queste 3 variabili?
    Ho perso una giornata a risolvere questo problema senza giungere da nessuna parte, credo che questo Spring Boot faccia acqua da tutte le parti. Queste operazioni devono essere automatiche, chiare e funzionali.
    Non ha senso proseguire la lettura se neppure il primo script funziona.
  • Re: Non riesco a capire la webapp hello-springboot

    Guarda che rispetto allo scenario che ho descritto prima io, dove dicevo che con MySQL funziona "quasi" tutto salvo il fatto non usa il data.sql ... per far leggere questo file ANCHE per MySQL (e nota, mantenendo le create fatte da Hibernate a fronte della/e entity) basta mettere nel application-prod.properties:

    spring.datasource.initialization-mode=always

    TUTTO qui.


    E comunque nel schema.sql hai messo un CREATE DATABASE che però non ha senso e non è possibile. Se noti, l'unico punto in cui è citato il db è nel url: jdbc:mysql://localhost:3306/test
    Questo vuol dire che il driver cerca di collegarsi già a quel db, se non c'è ... fallisce tutto il resto! Non arriva neanche ad un schema.sql!
    Semmai se vuoi che il db venga creato se non c'è allora basta mettere (specifico per MySQL, per altri dbms non saprei ora)

    jdbc:mysql://localhost:3306/test?...altro....&createDatabaseIfNotExist=true


    Quindi ricapitoliamo: non hai ancora studiato praticamente quasi nulla di Spring Boot (credo non sei ancora arrivato al capitolo 2 del libro), non hai letto attentamente la documentazione ufficiale (c'è ben scritto come funziona spring.datasource.initialization-mode=always) e già dici che "fa acqua" ...

    Mah .....
  • Re: Non riesco a capire la webapp hello-springboot

    giannino1995 ha scritto:


    ...
    credo che questo Spring Boot faccia acqua da tutte le parti.
    ...
    ciao giannino1995,

    è da un pò che leggo delle tue avventure e peripezie tra framework e libri di vario genere
    per cui ora mi sono deciso a dare il mio umile e scherzoso contributo.

    Spring è un framework affermato ed usato da tempo nelle sue varie evoluzioni;

    è vero che tutto è possibile ma è altrettanto vero che sembra illogico che
    ne venga pubblicata una versione che fa "acqua da tutte le parti" come dici tu.

    A proposito di logica , mi fa piacere ricordare un episodio personale che, se ben ricordo,
    ha a che fare con il gruppo musicale degli Squallor.

    Parecchi anni fa , in una cena a tema informatico tra amici informatici,
    dopo varie discussioni sulla programmazione e dopo la seconda ( ... o forse terza) bottiglia di grappa ,
    si concluse all'unamità che in informatica :

    se la mucca fa "muuuuu" il merlo deve fare "meeee" .... e se fischia .... non ci ha capito niente!

    Pace e cordialità nella speranza che sia un modo diverso e spero non offensivo
    di occasione di riflessione oltre a quanto già detto da molti altri.
  • Re: Non riesco a capire la webapp hello-springboot

    sspintux ha scritto:


    giannino1995 ha scritto:


    ...
    credo che questo Spring Boot faccia acqua da tutte le parti.
    ...
    ciao giannino1995,

    è da un pò che leggo delle tue avventure e peripezie tra framework e libri di vario genere ....
    Ottima e spiritosa riflessione sspintux ...

    La "carriera" forumistica di giannino si perde nella notte dei tempi ... (html.it l'ho incontrato per la prima volta anni fa... e lo sai peché ci sei anche tu ....), esattamente quanti libri da migliaia di pagine ha letto non lo sa nessuno ... di prove e test di linguaggi e framework si è perso il conto ... la sua libreria è ospitata da un transatlantico e le sue "determinazioni" sicure e scientifiche su cosa "funziona" (ed è buono) e cosa "fa acqua" (non vale una lira perché non ha saputo farlo funzionare ...) sono proverbiali ...

    A parte gli scherzi (è tutto uno scherzo ovviamente), giannino è fortunato a non avere la necessità (evidente) di dover completare gli studi o lavorare 10 ore al giorno e di potersi permettere tanto tempo libero ...
Devi accedere o registrarti per scrivere nel forum
31 risposte