de error se produce cuando lo ejecuta mi aplicación web.
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration': 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$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class
La descripción del error tirado de la siguiente manera,
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:<br>
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
<br> If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
Después de referirse esta respuesta , sé que tengo que hacer algunos cambios con mi pom.xml
archivo. Pero no sé qué hay que cambiar e incluso preguntas de tipo similar en StackOverflow no podían ayudarme a resolver esto.
Mi pom.xml
siguiente manera (cuando la creación de proyectos que he añadido "Web", "de la APP, dependencias" "MySQL"),
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>SL2INDUSTRY</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SL2INDUSTRY</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml -->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.9.8</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Plese nota de que no necesito para hacer frente a las bases de datos H2 en esta situación tan H2 no es mi solución
Ediciones: application.properties
archivo
spring.mvc.view.suffix=.jsp
Si usted lee su huella de error:
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration': 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$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class
Usted se dará cuenta de que él está tratando de utilizar la fuente de datos Hikari para configurar la conexión a BD. ¿Que esta pasando?
Se utiliza la primavera de arranque 2. Y por esta versión del arranque de la primavera ha cambiado la configuración por defecto.
Como se puede ver en la siguiente dirección:
https://www.baeldung.com/spring-boot-hikari#spring-boot-2
En la primavera de arranque 2, Hikari es la implementación de origen de datos predeterminado.
Esto es lo que ha cambiado desde la primavera de arranque 1.x:
· La dependencia a Hikari ahora se incluye de forma automática en primavera-arranque-motor de arranque-data-JPA
· El algoritmo de descubrimiento de que determina automáticamente una implementación de DataSource ahora prefiere Hikari sobre TomcatJDBC (ver el manual de referencia).
Por lo tanto, no tenemos nada que hacer si queremos utilizar Hikari en una aplicación basada en la primavera de arranque 2.x.
Y la configuración de Hikari es diferent.
Entonces, imagino que desea uso de la piscina Tomcat conexión. Se puede hacer:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
<version>9.0.10</version>
</dependency>
Esto excluirá Hikari por defecto de la configuración JPA primavera y entonces necesitará Tomcat-JDBC. El que se pueden configurar de fuente de datos:
Este sencillo enfoque nos permite obtener primavera de arranque utilizando un pool de conexiones Tomcat sin tener que escribir una clase @Configuration programación y definir un origen de datos de frijol.
Es también digno de mención que, en este caso, estamos usando la base de datos en memoria H2. Primavera de arranque se autoconfigura H2 para nosotros, sin tener que especificar una dirección URL base de datos, usuario y contraseña.
Sólo tenemos que incluir la dependencia correspondiente en el archivo “pom.xml” y la primavera de arranque haremos el resto para nosotros.
Alternativamente, es posible omitir el algoritmo de rastreo de la piscina de conexión que utiliza Spring arranque y especificar explícitamente una fuente de datos de agrupación de conexiones en el archivo “application.properties”, utilizando la propiedad “spring.datasource.type”:
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
// other spring datasource properties
spring.datasource.url=...
spring.datasource.username=...
spring.datasource.password=...
...
Aquí tienes la referencia completa a desactivar Hikari y configurar Tomcat:
https://www.baeldung.com/spring-boot-tomcat-connection-pool
Si desea utilizar la configuración Hikari es diferent:
https://www.baeldung.com/spring-boot-hikari
Pero una de estas dos opciones será arreglar el problema.