java - 即使数据库已关闭,Spring 应用程序也应该启动

标签 java spring hibernate orm spring-data

我有一个 spring 应用程序,它对数据库进行最少的操作。 我有一个要求,我的应用程序应该在没有数据库的情况下运行(或当数据库关闭时)。下面是我的数据源配置。

<bean id="dt31DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" depends-on="systemPropertyInitializer"
                      p:driverClass="${dt31.driver_class}"
                      p:jdbcUrl="${dt31.url}"
                      p:user="${dt31.username}"
                      p:password="${dt31.password}"
                      p:idleConnectionTestPeriod="1000"
                      p:maxPoolSize="4"
                      p:minPoolSize="2"
                      p:maxIdleTime="2000"
                      p:unreturnedConnectionTimeout="600"
                      p:contextClassLoaderSource="library"
                      p:privilegeSpawnedThreads="true"
                      p:initialize=false
                      />

    <bean id="dt31SessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dt31DataSource"/>
        <property name="packagesToScan" value="com.t22.dt31"/>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    ${dt31.dialect}
                </prop>
                <prop key="hibernate.show_sql">
                    false
                </prop>
                <prop key="hibernate.hbm2ddl.auto">
                    update
                </prop>
            </props>
        </property>
    </bean>

我找到了一个 page在 google 中,说在 spring 数据源配置中使用“initialize: false”。但是我使用的是“ComboPooledDataSource”数据源,它没有这个属性。有没有其他方法可以实现这个?

最佳答案

应用服务层可以与两个 DAO 层(文件系统和数据库)一起操作,因此当 DB 关闭时,您可以捕获连接获取异常并切换到文件系统。

拥有两个真实来源将很难在两个不同的数据源之间保持一致性,尤其是在一个资源不可用的情况下。

当两种资源都可用时,您可以使用 XADisk以及用于 XADataSource 和 JTA 事务管理的 Bitronix。

关于java - 即使数据库已关闭,Spring 应用程序也应该启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31740856/

相关文章:

java - hibernate hsql 获取错误节点 : org. 没有数据类型 hibernate.hql.ast.tree.IdentNode

java - 在Java中,如何访问新监听器 block 内的静态方法参数?

java - Spring Integration - channel 和线程

java - Hibernate Criteria 在两次连续调用中为不同的限制返回相同的值

hibernate - Hibernate在Grails应用中的版本值

java - @Autowired 在 Spring 和 Vaadin 集成中不起作用

java - 线程 "main"java.util.InputMismatchException 中出现异常错误

java - 如何在 Java 中查找 Cipher 是否需要 IV?

java - 如何将 java.sql.Blob 写入 JPA 实体?

java - 在一个实例 bean 上同时使用注解和 XML 配置