Actualmente estoy siguiendo el curso de primavera de John Thompson Spring Framework 5: Beginner to Guru. Intento construir la primera aplicación básica, pero sigo recibiendo un error. Intenté buscar la solución en la web, pero nada funciona realmente.

Aquí está el código pom.xml:

http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.mycompany.firstspringproject</groupId>
<artifactId>first-spring-project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>first-spring-project</name>
<description>First project for Spring Boot</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Todo el archivo se generó en función de lo que elegí en Spring Initializr. El error que sigo recibiendo dice:

 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD FAILURE
 [INFO] ------------------------------------------------------------------------
 [INFO] Total time: 4.648 s
 [INFO] Finished at: 2018-01-20T21:20:05+01:00
 [INFO] Final Memory: 38M/378M
 [INFO] ------------------------------------------------------------------------
 [ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-          plugin:1.5.9.RELEASE:run (default-cli) on project first-spring-project: An      exception occurred while running. null: InvocationTargetException: Error      creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Tomcat.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.tomcat.jdbc.pool.DataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active). -> [Help 1]
 [ERROR]
 [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
 [ERROR] Re-run Maven using the -X switch to enable full debug logging.
 [ERROR]
 [ERROR] For more information about the errors and possible solutions, please read the following articles:
 [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Si necesita más detalles, solo pregunte. Haré todo lo posible para entregar.

0
Maciaz 20 ene. 2018 a las 23:27

3 respuestas

La mejor respuesta

El error que finalmente está obteniendo es este:

No se puede determinar la clase de controlador de base de datos integrada para el tipo de base de datos NINGUNO.

Según la documentación, debe definir algunas propiedades para que Spring sepa con qué base de datos desea hablar. Fuera de la caja, Spring Boot no tiene un valor predeterminado razonable para esto.

Un ejemplo de lo que necesitará definir en application.properties:

spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

El controlador, la url y las credenciales cambiarán dependiendo de dónde aloje su base de datos y de qué tipo sea. Se puede encontrar una lista completa de propiedades en el apéndice. Y si lo desea, puede incrustar una base de datos H2 en lugar de usar MySql como en el ejemplo anterior.

2
Todd 20 ene. 2018 a las 20:33

Mira tu rastro de pila

la excepción anidada es org.springframework.boot.autoconfigure.jdbc.DataSourceProperties $ DataSourceBeanCreationException

No se puede determinar la clase de controlador de base de datos integrada para el tipo de base de datos NINGUNO

tiene una configuración de base de datos para cargar desde un perfil particular, es posible que necesite activarla (actualmente no hay perfiles activos)

Intenta arreglar tu código.

  1. verifique la definición del bean de origen de datos, ¿se adjunta a un perfil específico? De lo contrario, lea más aquí

    @Profile("dev")//This is how you attach your bean to profile.
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
      return DataSourceBuilder.create().build();
    }
    
  2. Si lo anterior es cierto, debe indicarle al contenedor de Spring qué perfil usar (por ejemplo, spring.profiles.active = dev), a menos que se especifique en su archivo de propiedades. Lea más aquí

0
surya 20 ene. 2018 a las 20:48

Creo que su configuración de fuente de datos de primavera podría estar incompleta, es difícil decirlo sin las fuentes.

Según la respuesta de Andy Wilkinson a un problema similar:

No ha proporcionado a Spring Boot información suficiente para configurar automáticamente un DataSource. Para hacerlo, deberá agregar algunas propiedades a application.properties con el prefijo spring.datasource. Eche un vistazo a DataSourceProperties para ver todas las propiedades que puede establecer.

Deberá proporcionar la url y el nombre de clase de controlador adecuados:

spring.datasource.url = …
spring.datasource.driver-class-name = …

Sin embargo, si su aplicación simplemente no tiene una fuente de datos por diseño, es posible que deba deshabilitar la configuración automática como se explica en Stephan Isele :

Es posible ejecutar una aplicación de arranque de primavera sin fuente de datos. Debe deshabilitar la configuración automática para el origen de datos y también puede ser para JPA:

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
1
Simon Berthiaume 20 ene. 2018 a las 20:55
48360742