【问题标题】:Exit program on Spring jpa/Hibernate connection exceptionSpring jpa / Hibernate连接异常退出程序
【发布时间】:2015-05-07 15:05:45
【问题描述】:

如果我的程序在启动时无法连接到数据库,我希望它退出。目前此连接使用以下设置:

应用程序上下文.xml

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
        <value>${db.driver}</value>
    </property>
    <property name="url">
        <value>${db.url}</value>
    </property>
    <property name="username">
        <value>${db.username}</value>
    </property>
    <property name="password">
        <value>${db.password}</value>
    </property>
</bean>

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
    <property name="packagesToScan" value="com.template" />
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">false</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.ejb.naming_strategy">${naming_strategy}</prop>
            <prop key="hibernate.connection.autoReconnect">true</prop>
            <prop key="hibernate.connection.autoReconnectForPools">true</prop>
            <prop key="hibernate.connection.check-valid-connection-sql">SELECT 1</prop>
            <prop key="hibernate.connection.failOverReadOnly">false</prop>
            <prop key="hibernate.connection.maxReconnects">${maxreconnects}</prop>
            <prop key="hibernate.connection.initialTimeout">${reconnect.interval}</prop>
        </props>
    </property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

存储库:

@Repository
public interface Repository extends CrudRepository<Object, String> {

}

我应该在哪里放置代码来捕获由连接失败创建的运行时异常并不明显。如果数据库不存在,我可以使用其他设置退出吗?

【问题讨论】:

    标签: java spring hibernate spring-jdbc


    【解决方案1】:

    通常,如果 spring 在启动时无法创建 bean,它会停止。如果数据库连接失败,那么无论如何它都会自动停止。你想捕捉那个异常,并在退出之前做点什么吗?

    【讨论】:

    • 谢谢,我刚刚重新阅读并意识到 servlet 上下文已经停止,只是容器仍在运行。如果你写你的答案,我会给你功劳
    猜你喜欢
    • 1970-01-01
    • 2015-02-09
    • 2018-10-19
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 2014-07-27
    相关资源
    最近更新 更多