我一直在研究Spring Data Rest,特别是对于cassandra以及我的同事和我在Spring Data连接数据库时遇到的问题之一。我们并不总是希望一个休息控制器连接到数据库,所以如果我们有一个类扩展CRUDRepository,spring什么时候建立连接?它是否在应用程序启动期间连接到数据库?那是我们可以控制的吗?
例如,我在Spring的网站上实现了这个例子: https://spring.io/guides/gs/accessing-data-rest/
代码中的什么时候弹簧连接到数据库?
答案 0 :(得分:1)
一旦Datasource初始化,Spring就会连接到DB。基本上,Spring上下文将以某种方式变为活着(Web侦听器,手动调用它们)并开始创建bean。一旦到达数据源,就会建立连接并填充连接池。
当然,以上是基于正常的开箱即用配置,一切都可以根据您的喜好进行设置。
因此,除非您决定自己控制连接,否则数据库连接将在那里等待使用。
答案 1 :(得分:0)
不同意以上答案。 作为研究的一部分,我使用bean配置启动了数据源,然后更改了数据库密码(不是在我的spring应用程序中,而是真正的db用户名密码) 连接会保留一段时间,然后在某个时间点(可能是空闲时间)它将停止工作并引发凭据异常。 这足以说明JPA不会保持连接坐着等待使用,而是根据需要使用某种机制来占用/释放数据库连接。