your with unable name jpamappingcontext error entitymanagerfactory defining creating consider bean java spring spring-boot

java - unable - error creating bean with name entitymanagerfactory spring boot 2



Spring Boot-Error al crear bean con el nombre ''dataSource'' definido en el recurso de ruta de clase (17)

¿Estás ejecutando la aplicación como un contenedor? (java -jar xxxx.jar)

Si es así, ¿tiene las propiedades de la aplicación almacenadas en ese contenedor?

Si no, intenta descubrir por qué:

  • Para que el paquete se empaquete automáticamente, los archivos pueden estar en: src / main / resources / application.properties
  • El plugin maven en pom.xml también se puede configurar

Tengo la aplicación web Spring Boot. Se centra en un enfoque RESTful. Toda la configuración parece estar en su lugar pero, por alguna razón, MainController no puede manejar la solicitud. Resulta en un error 404. ¿Como arreglarlo?

@Controller public class MainController { @Autowired ParserService parserService; @RequestMapping(value="/", method= RequestMethod.GET) public @ResponseBody String displayStartPage(){ return "{hello}"; } }

Solicitud

@Configuration @ComponentScan(basePackages = "") @EnableAutoConfiguration public class Application extends SpringBootServletInitializer{ public static void main(final String[] args) { SpringApplication.run(Application.class, args); } @Override protected final SpringApplicationBuilder configure(final SpringApplicationBuilder application) { return application.sources(Application.class); } }

ParserController

@RestController public class ParserController { @Autowired private ParserService parserService; @Autowired private RecordDao recordDao; private static final Logger LOG = Logger.getLogger(ParserController.class); @RequestMapping(value="/upload", method= RequestMethod.POST) public @ResponseBody String fileUploadPage( } }

ACTUALIZAR

Parece que MySQL no puede ser inicializado por Spring ...

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration'': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private javax.sql.DataSource org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.dataSource; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''dataSource'' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration$NonEmbeddedConfiguration.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration.dataSource()] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath.

ACTUALIZACIÓN2

application.properties

spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/logparser spring.datasource.username=root spring.datasource.password=root spring.jpa.database = MYSQL spring.jpa.show-sql = true # Hibernate hibernate.dialect: org.hibernate.dialect.MySQL5Dialect hibernate.show_sql: true hibernate.hbm2ddl.auto: update entitymanager.packagesToScan: /

ACTUALIZACIÓN4

Parece que los controladores lite no responden aunque se hayan establecido @RequestMapping . ¿Por qué podría ser?

PD. Ocurre cuando ejecuto la test ciclo de vida de Maven. Cuando se ejecuta en modo degub en IntelliJ, no se genera ningún error.

ACTUALIZACIÓN5

También uso este DAO como se explica en el tutorial ...

public interface RecordDao extends CrudRepository<Record, Long> { }

http://blog.netgloo.com/2014/10/27/using-mysql-in-spring-boot-via-spring-data-jpa-and-hibernate/

ACTUALIZACIÓN6

Cambié las propiedades de mi aplicación. Y probé todas las combinaciones, pero se niega a funcionar. ; (

Salida Maven:

------------------------------------------------------- T E S T S ------------------------------------------------------- Running IntegrationTest Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 2.365 sec <<< FAILURE! - in IntegrationTest saveParsedRecordsToDatabase(IntegrationTest) Time elapsed: 2.01 sec <<< ERROR! java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:99) at org.springframework.test.context.DefaultTestContext.getApplicationContext(DefaultTestContext.java:101) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:331) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:213) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:290) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:292) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:233) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:87) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:176) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124) at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration'': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private javax.sql.DataSource org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.dataSource; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''dataSource'' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration$NonEmbeddedConfiguration.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration.dataSource()] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath.


Compruebe que tiene la dependencia de la base de datos en el grupo de tiempo de ejecución en build.gradle

runtime group: ''com.h2database'', name: ''h2'', version: ''1.4.194''

o cambie el alcance de la prueba al tiempo de ejecución si usa Maven

<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.194</version> <scope>runtime</scope> </dependency>


Desde el aspecto de las cosas, no has pasado suficientes datos a Spring Boot para configurar el origen de datos

Cree / En su application.properties existente agregue lo siguiente

spring.datasource.driverClassName= spring.datasource.url= spring.datasource.username= spring.datasource.password=

asegurándose de agregar un valor para cada una de las propiedades.


En mi caso, esto estaba sucediendo porque org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.dataSource es un campo autocadenado sin un Calificador y estoy usando múltiples fuentes de datos con nombres calificados. Resolví este problema usando @Primary arbitrariamente en una de mis configuraciones de beans de DataSource como

@Primary @Bean(name="oneOfManyDataSources") public DataSource dataSource() { ... }

Supongo que quieren que implementes AbstractRoutingDataSource, y luego esa configuración automática solo funcionará porque no se necesita ningún calificador, solo tienes un único origen de datos que permite que tus beans se resuelvan en el DataSource apropiado según sea necesario. Entonces no necesitas las anotaciones @Primary o @Qualifier en absoluto, porque solo tienes un solo DataSource.

En cualquier caso, mi solución funcionó porque mis beans especifican DataSource por calificador, y la configuración automática de JPA es feliz porque tiene un único DataSource principal. De ninguna manera estoy recomendando esto como la forma "correcta" de hacer las cosas, pero en mi caso resolvió el problema rápidamente y no disuadió el comportamiento de mi aplicación de manera notable. Esperemos que algún día podamos implementar AbstractRoutingDataSource y refacturar todos los beans que necesiten un DataSource específico y quizás sea una solución más ordenada.


En mi caso, simplemente ignoré lo siguiente en el archivo application.properties:

# Hibernate

# spring.jpa.hibernate.ddl-auto = actualización

Esto funciona para mi....


Estaba enfrentando este problema incluso después de suministrar todas las propiedades de origen de datos requeridas en application.properties. Luego me di cuenta de que la clase de configuración de propiedades no estaba siendo escaneada por Spring boot porque estaba en una jerarquía de paquetes diferente en comparación con mi Spring boot Application.java y, por lo tanto, no se aplicaron propiedades al objeto de fuente de datos. Cambié el nombre del paquete de la clase de configuración de mis propiedades y comenzó a funcionar.


Este problema aparece mientras ejecuta Test. Añadir dependencia

testCompile group: ''com.h2database'', name: ''h2'', version: ''1.4.197''

Agregue los recursos de la carpeta bajo fuente de prueba agregue el archivo bootstrap.yml y proporcione contenido.

spring: datasource: type: com.zaxxer.hikari.HikariDataSource url: jdbc:h2:mem:TEST driver-class-name: org.h2.Driver username: username password: password hikari: idle-timeout: 10000

esto configurará su fuente de datos.


Estuve enfrentando el mismo problema durante varios días, y finalmente el problema no está en el código, el problema proviene de maven, debe eliminar todos los archivos que descargó de su disco duro "C: / Users / username.m2 / repositorio ", y hacer otra actualización maven para su proyecto, que solucionará su problema.


Las propiedades hibernate.* Son inútiles, deberían ser propiedades spring.jpa.* . Sin mencionar que está intentando anular los que ya se establecieron utilizando las propiedades spring.jpa.* . (Para la explicación de cada propiedad, sugiero una lectura de la guía de referencia de Spring Boot.

spring.jpa.database-platform = org.hibernate.dialect.MySQL5Dialect spring.jpa.show-sql = true # Hibernate spring.jpa.hibernate.ddl-auto=update

Además, los paquetes para escanear se detectan automáticamente según el paquete base de su clase de Application . Si desea especificar algo más, use la anotación @EntityScan . Además, especificar el paquete más nuevo no es muy acertado ya que escaneará toda la ruta de clase, lo que afectará gravemente el rendimiento.


Me funcionó, puedes probar tu: agrega esto a las opciones de VM en Tomcat

-DdevBaseDir="C:/Your_Project_Dir_Path"


No está directamente relacionado con la pregunta original, pero esto será útil para alguien. Este error se me ocurrió con una estructura simple de dos proyectos. Un proyecto manejaba algunas operaciones de base de datos con jdbc de primavera (digamos A) y el otro no tenía ninguna operación de jdbc (digamos B). Pero aún así apareció este error mientras comenzaba el servicio B. Decir que el origen de datos debería inicializarse correctamente.

Como descubrí que había agregado esta dependencia al pom padre de los dos módulos

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>

Esto causó que la primavera inicializara las dependencias jdbc para el proyecto B también. Entonces, lo moví al poject A de A, todo estaba bien.

Espero que esto ayude a alguien


Obtuve el mismo error, descubrí que se debía a algunas de las dependencias que faltaban en mi pom.xml, como la de Spring JPA, Hibernate, Mysql o tal vez jackson. Así que asegúrese de que las dependencias no falten en su pom.xml y compruebe la compatibilidad de sus versiones.

<!-- Jpa and hibernate --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.0.3.Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency>


Ofrecerle algo diferente, cuando encuentre este tipo de error, no podrá crear un origen de datos de bean en un caso de prueba.

Puede ser causado por algunas razones:

  1. Sin fuente de datos, necesitará crear su fuente de datos, fuente de datos h2 en memoria o lo que sea, o puede elegir la forma como exclude={datasource··} .
  2. Usted tiene su fuente de datos, como MySQL, pero aún no funciona. Fue causado por la clase AutoConfigureTestDatabase , elegirá una fuente de datos para usted que puede causar ambigüedad.

Solución: agregue @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) para evitar reemplazar el origen de datos predeterminado.


Parece que el problema inicial es con la configuración automática.

Si no necesita el origen de datos, simplemente elimínelo del proceso de configuración automática:

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})


Quizás olvidaste el controlador MySQL JDBC.

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.34</version> </dependency>


Si está utilizando application.properties en la aplicación de arranque de primavera, simplemente coloque la siguiente línea en application.properties y debería funcionar:
spring.datasource.url: jdbc: mysql: // google /? cloudSqlInstance = & socketFactory = com.google.cloud.sql.mysql.SocketFactory & user = **** & password = ****


cambiar debajo de la línea de código

spring.datasource.driverClassName

a

spring.datasource.driver-class-name