尽管数据库关闭,但仍启动SpringBoot服务器

时间:2020-06-23 08:32:46

标签: java spring spring-boot hibernate jpa

我有一个连接到PostgreSQL数据库的SpringBoot应用程序。即使数据库已关闭,我也想启动服务器,但是continue-on-error=true不起作用。当我模拟关闭数据库(密码错误)时,即使存储库延迟加载,也会遇到Error creating bean with name 'countryRepository'错误。

我认为这是由于默认@EnableJpaRepositories。有人知道怎么也懒惰地初始化它吗?

通过添加自定义的,延迟初始化的EntityManagerFactory,EntityManager,TransactionManager,TransactionTemplate实现来解决

application.properties

# Database Properties
spring.datasource.url=jdbc:postgresql://localhost:5432/world-db
spring.datasource.username=world
spring.datasource.password=world123F
spring.datasource.hikari.initializationFailTimeout=0

# Not working... 
spring.datasource.continue-on-error=true
spring.datasource.initialization-mode=never
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL92Dialect
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.hikari.minimum-idle=0
spring.datasource.hikari.initialization-fail-timeout=-1

# Hibernate Properties
spring.jpa.open-in-view=false
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL92Dialect
spring.jpa.hibernate.ddl-auto=validate
spring.h2.console.enabled=true

AppConfig.java

@Lazy
@Configuration
@ComponentScan(basePackages = "com.flairstech.workshop")
public class AppConfig {

    @Bean
    public CountryLanguage getCountryLanguage(){
        return new CountryLanguage();
    }

    @Bean
    public Country getCountry(){
        return new Country();
    }
}

0 个答案:

没有答案