Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HikariCP在更新spring boot 1.x.x=>;后未配置数据源或添加postgres连接;2.x.x_Java_Spring_Spring Boot_Spring Batch_Hikaricp - Fatal编程技术网

Java HikariCP在更新spring boot 1.x.x=>;后未配置数据源或添加postgres连接;2.x.x

Java HikariCP在更新spring boot 1.x.x=>;后未配置数据源或添加postgres连接;2.x.x,java,spring,spring-boot,spring-batch,hikaricp,Java,Spring,Spring Boot,Spring Batch,Hikaricp,我最近从spring boot starter 1.5.9.RELEASE(使用spring版本4.3.13.RELEASE)=>2.2.4.RELEASE更新了我的spring boot/spring批处理应用程序(使用spring版本5.2.3.RELEASE。1.5.9.RELEASE使用的是Hikari 2.6.3;我在迁移/更新的2.2.4.RELEASE版本中也尝试过这个版本。2.2.4.RELEASE使用的是Hikari 3.4.2.2,两者似乎都不起作用。我使用的是postgre

我最近从spring boot starter 1.5.9.RELEASE(使用spring版本
4.3.13.RELEASE
)=>2.2.4.RELEASE更新了我的spring boot/spring批处理应用程序(使用spring版本
5.2.3.RELEASE
。1.5.9.RELEASE使用的是
Hikari 2.6.3
;我在迁移/更新的
2.2.4.RELEASE
版本中也尝试过这个版本。
2.2.4.RELEASE
使用的是
Hikari 3.4.2.2
,两者似乎都不起作用。我使用的是
postgresql 42.2.9

这是Hikari在运行时登录我的控制台的方式(运行我的应用程序的
1.5.9.RELEASE
spring boot版本时):

正如您所看到的,它是不同的。通常我不关心日志,但是当调用我的
JpaRepository
方法时,比如
.saveAll()
,应用程序挂起/停止执行任何操作,并且从未写入数据库。起初,我感到困惑,并认为这是我在Spring batch中设置的事务/实体管理器,但正如我之前所说,我所有的代码/配置实际上都工作得很好(写入数据库)在
1.5.9.RELEASE
spring boot.现在,我刚刚在日志中发现了这个数据库配置,我99%确定我的数据库连接甚至没有正确初始化

这是我的应用程序yaml(这是一个代码片段,但包含与数据库连接相关的所有信息):

以及我对数据库配置的定义,DatabaseConfiguration.java

@Configuration
@EnableTransactionManagement
public class DatabaseConfiguration {

    @Autowired
    private Environment envVar;

    @Autowired
    private KeyVault keyProvider;

    @Bean(name = "dataSource")
    @ConfigurationProperties(
            prefix = "spring.datasource.hikari"
    )

    public DataSource dataSource(DataSourceProperties dataSourceProperties) {

        log.debug("Configuring Datasource");

        String dbPassword = keyProvider.getKeyProvider(dataSourceProperties.getPassword());

        return DataSourceBuilder
                .create(dataSourceProperties.getClassLoader())
                .type(HikariDataSource.class)
                .driverClassName(dataSourceProperties.getDriverClassName())
                .url(dataSourceProperties.getUrl())
                .username(dataSourceProperties.getUsername())
                .password(dbPassword)
                .build();
    }
}
我在Spring Batch
JobRepository
中使用这个
@Autowiring
数据源,它是在我的BatchConfiguration.java类中定义的

@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
   // Autowiring of the JobBuilderFactory, StepBuilderFactory here

 @Bean
        public JobRepository jobRepository(PlatformTransactionManager transactionManager, @Qualifier("dataSource") DataSource dataSource) throws Exception {
        JobRepositoryFactoryBean jobRepositoryFactoryBean = new JobRepositoryFactoryBean();
        jobRepositoryFactoryBean.setDataSource(dataSource); // dataSource
        jobRepositoryFactoryBean.setTransactionManager(transactionManager);
        jobRepositoryFactoryBean.setDatabaseType("POSTGRES");
        return jobRepositoryFactoryBean.getObject();

// more business logic code here
}

这是您在24小时内第四次以不同的形式提出相同的问题。请不要这样做。我强烈建议您阅读for和您使用的不同框架,而不是以不同的形式提出所有这些问题。您正在跳转3到5个主要版本,事情已经发生了很大的变化。因此,请阅读这些指南一次又一次地问同样的问题。我帮助了几十个人,但是当我询问更多信息时,我确实想要一个答案。而不是人们用同样的问题开始一个新问题,没有额外的信息。但是,唉。我知道你问了同样的问题,但你仍然遇到升级问题,这些问题与更新的版本,不同的属性,而您只是没有阅读升级指南。@M.Deinum我不知道该指南,您也没有在我以前的任何帖子中发布。我现在正在阅读它,感谢您对M.Deinum所说的+1。我也得出了相同的结论:。像这样的大爆炸迁移是不推荐的。您需要迁移一个主要的一次升级一个版本,每次都阅读迁移指南。@M.Deinum我可以尝试每个版本,发现2.2.0可以工作,但是->2.2.1失败。我可以手动升级到spring batch core 4.2.3.RELEASE(2.2.0使用spring batch core 4.2.0.RELEASE)但我必须更新jackson databind,或者它做了与我的第一个JpaRepositor方法调用相同的事情。saveAll()没有将任何数据持久化到postgres db,应用程序正在运行,只是挂起/粘住(在调试时,看起来它在Spring AOP/TX类中跳入无限循环,我看到事务中有奇怪的东西).这里的逻辑步骤是什么?想找到解决方案吗
spring:
  application:
    name: My Super Cool App
  profiles:
    active: "myLocal,myLocalDev"
  batch.job.enabled: false
  datasource:
    hikari:
      maximumPoolSize: 5
      connectionTimeout: 60000
      max-lifetime: 20000
      auto-commit: false
  jpa:
    database: POSTGRESQL
    database-platform: org.hibernate.dialect.PostgreSQL82Dialect
    show-sql: false
    hibernate:
      ddl-auto: none
    properties:
      hibernate:
        jdbc.batch_size: 5000
        order_inserts: true
        flushMode: COMMIT

---

spring:
  profiles: myLocal
  datasource:
    url: jdbc:postgresql://database-main-url.mywebsite.com:5432/cooldbname
    username: mysuperkewluser
    password: hahasupersecretpw
@Configuration
@EnableTransactionManagement
public class DatabaseConfiguration {

    @Autowired
    private Environment envVar;

    @Autowired
    private KeyVault keyProvider;

    @Bean(name = "dataSource")
    @ConfigurationProperties(
            prefix = "spring.datasource.hikari"
    )

    public DataSource dataSource(DataSourceProperties dataSourceProperties) {

        log.debug("Configuring Datasource");

        String dbPassword = keyProvider.getKeyProvider(dataSourceProperties.getPassword());

        return DataSourceBuilder
                .create(dataSourceProperties.getClassLoader())
                .type(HikariDataSource.class)
                .driverClassName(dataSourceProperties.getDriverClassName())
                .url(dataSourceProperties.getUrl())
                .username(dataSourceProperties.getUsername())
                .password(dbPassword)
                .build();
    }
}
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
   // Autowiring of the JobBuilderFactory, StepBuilderFactory here

 @Bean
        public JobRepository jobRepository(PlatformTransactionManager transactionManager, @Qualifier("dataSource") DataSource dataSource) throws Exception {
        JobRepositoryFactoryBean jobRepositoryFactoryBean = new JobRepositoryFactoryBean();
        jobRepositoryFactoryBean.setDataSource(dataSource); // dataSource
        jobRepositoryFactoryBean.setTransactionManager(transactionManager);
        jobRepositoryFactoryBean.setDatabaseType("POSTGRES");
        return jobRepositoryFactoryBean.getObject();

// more business logic code here
}