【Spring Boot】 Error al crear un bean con el nombre 'servletEndpointRegistrar' definido en la clase

Debido a la actualización del proyecto, encontré este problema y encontré muchas soluciones. En vano.

Algunos dicen que no hay ninguna referencia al paquete jdbc; algunos dicen que el DataSource debe excluirse de la clase de inicio, pero no se puede resolver.

Finalmente encontré este artículo, porque la estructura del proyecto no la hice yo mismo, las referencias en el interior son súper complicadas y la estructura también es muy complicada. Al final, los arquitectos lo resolvieron por sí mismos, pero creo que fue causado por las razones que mencionamos a continuación.

El artículo del autor se reproduce como registro. Cuac cuac.

 

org.springframework.context.ApplicationContextException: Unable to start
web server; nested exception is java.lang.RuntimeException:
org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'servletEndpointRegistrar' defined in class path resource
[org/springframework/boot/actuate/autoconfigure/endpoint/web/ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration.class]: Bean instantiation via factory method failed;
nested exception is
org.springframework.beans.BeanInstantiationException: Failed to
instantiate
[org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: Factory method 'servletEndpointRegistrar' threw exception; nested
exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'healthEndpoint' defined in class path
resource
[org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]: Bean instantiation via factory method failed; nested
exception is org.springframework.beans.BeanInstantiationException:
Failed to instantiate
[org.springframework.boot.actuate.health.HealthEndpoint]: Factory method
'healthEndpoint' threw exception; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating
bean with name
'org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthIndicatorAutoConfiguration': Bean instantiation via constructor failed;
nested exception is
org.springframework.beans.BeanInstantiationException: Failed to
instantiate
[org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthIndicatorAutoConfigurationEnhancerBySpringCGLIB96597db7]: Constructor
threw exception; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'dataSource': Post-processing of FactoryBean's singleton
object failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'scopedTarget.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

resolver:

El error anterior en realidad se debe a que el grupo de conexiones de la base de datos JDBC no lee la información de configuración al cargar varias fuentes de datos.

Para describir este problema claramente, supongo que hay un proyecto de Maven A. B, C y D son submódulos de A (Módulo Maven), y B es el módulo básico de A. Independientemente de si C y Los módulos D existen, siempre que A se inicie, debe ser dependiente. B.

En circunstancias normales, B se empaqueta con la clase principal y C y D se empaquetan sin la clase principal como paquete de componentes cuando se empaqueta Maven. De esta manera, los módulos B, C y D se pueden desacoplar.

Pero esta vez el error es que el código del grupo de conexiones JDBC está en el módulo B, y cuando B + D, la configuración del grupo de conexiones de la base de datos no está incluida en la configuración del servidor de configuración de D (no hay información de configuración de la fuente de datos en el Gitlab configuración del almacén). Por lo tanto, no hay información de grupo de conexiones en el archivo de pago. Y B necesita cargar el grupo de conexiones JDBC al inicio, por lo que se informa un error porque no se puede leer la información de configuración.

Ante esta situación, cambie la arquitectura del proyecto o agregue la información del pool de conexiones al archivo de configuración de D (si este es el caso, se recomienda configurarlo en el bootstrap.yml del proyecto local, porque GitLab es una configuración pública. No te muevas si no lo necesitas. Prefiero diferenciar los archivos de configuración localmente según el entorno. Por supuesto, es mejor refactorizar un poco la estructura del proyecto.

 

Transferencia desde: https://blog.csdn.net/kida_yuan/article/details/100691001

Supongo que te gusta

Origin blog.csdn.net/suixinsuoyu12519/article/details/112387811
Recomendado
Clasificación