Отключить привод HealthCheck для «прототипа», а также база данных с несколькими данными с несколькими источниками данныхJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Отключить привод HealthCheck для «прототипа», а также база данных с несколькими данными с несколькими источниками данных

Сообщение Anonymous »

Я вижу здесь пару подобных вопросов, но в моем случае ничего не работает. Итак, хотя это выглядит как «дубликат», я надеюсь, что это не так. Первичный используется Spring JPA, два других API Pure JDBC. Один из этих данных (SourceDataSource) определяется как параметризованный прототип, а также экземпляр с различными параметрами через ObjectProvider. < /P>
Класс @configuration выглядит так: < /p>
@Configuration
public class DbConfig
{
@Bean
@ConfigurationProperties("spring.datasource")
public DataSourceProperties primaryDataSourceProperties()
{
return new DataSourceProperties();
}

@Bean(name = "cfgDataSource")
@Primary
@ConfigurationProperties("spring.datasource.hikari")
public DataSource primaryDataSource()
{
return primaryDataSourceProperties()
.initializeDataSourceBuilder()
.type(HikariDataSource.class)
.build();
}

@Bean
@ConfigurationProperties("app.destination-datasource")
public DataSourceProperties destinationDataSourceProperties()
{
return new DataSourceProperties();
}

@Bean(name = "destinationDataSource")
@ConfigurationProperties("app.destination-datasource.hikari")
public DataSource destinationDataSource()
{
HikariDataSource dataSource = destinationDataSourceProperties()
.initializeDataSourceBuilder()
.type(HikariDataSource.class)
.build();
return dataSource;
}

@Bean
@ConfigurationProperties("app.source-datasource")
public DataSourceProperties sourceDataSourceProperties()
{
return new DataSourceProperties();
}

@Bean(name = "sourceDataSource")
@Scope("prototype")
@ConfigurationProperties("app.source-datasource.hikari")
@Lazy
public DataSource sourceDataSource(String url, String user, String password)
{
DataSourceProperties srcProps = sourceDataSourceProperties();
srcProps.setUrl(url);
srcProps.setUsername(user);
srcProps.setPassword(password);
DataSource ds = srcProps
.initializeDataSourceBuilder()
.build();
return ds;
}
}

< /code>
Все работает нормально, JPA работает, создание данных также, но только пока я не попытаюсь добавить привод.
После добавления привода я получаю следующее исключение: < /p>
2025-03-13T01:33:28.175+02:00 WARN 39155 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourcePoolMetadataMeterBinder' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/jdbc/DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration.class]:
Failed to instantiate [org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration$DataSourcePoolMetadataMeterBinder]:
Factory method 'dataSourcePoolMetadataMeterBinder' threw exception with message:
Error creating bean with name 'sourceDataSource' defined in class path resource [app/config/DbConfig.class]:
Unsatisfied dependency expressed through method 'sourceDataSource' parameter 0:
No qualifying bean of type 'java.lang.String' available:
expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
2025-03-13T01:33:28.177+02:00 INFO 39155 --- [ main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2025-03-13T01:33:28.183+02:00 INFO 39155 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2025-03-13T01:33:28.195+02:00 INFO 39155 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger :

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2025-03-13T01:33:28.215+02:00 ERROR 39155 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of method sourceDataSource in com.freewayfleet.dbreplicator.config.DbConfig required a bean of type 'java.lang.String' that could not be found.

Action:

Consider defining a bean of type 'java.lang.String' in your configuration.

< /code>
Мой вопрос: почему привод пытается создать экземпляр прототипа, а также как это исправить? Я думаю, что мог бы сделать какой -то декоратор для этого конкретного параметризованного источника данных, но он потребует рефакторирования большого количества кода, а текущий подход «чище», я полагаю.management:
health:
db:
enabled: false
endpoint:
health:
group:
readiness:
include: db
exclude: db/sourceDataSource
default:
include: "*"
exclude: "sourceDataSource"
server:
port: 9091
endpoints:
web:
base-path: /actuator
path-mapping:
health: /health
exposure:
include: metrics,health,env
< /code>
Но с одинаковыми результатами.
Я определенно делаю что -то не так. Пожалуйста, помогите.
Spring Boot 3.4.3

Подробнее здесь: https://stackoverflow.com/questions/795 ... n-app-with
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»