Spring 引导和 Spring 会话:如何控制数据源
Spring Boot and Spring Session: How to control the DataSource
我正在尝试同时使用 Spring 引导和 Spring 会话,特别是使用 JDBC。
只需在 application.properties 中添加行:
spring.session.store-type=jdbc
让它正常工作,这很好,因为我碰巧在该文件中也有一些数据源属性,即
myapp.datasource.url=jdbc:mysql://localhost/etc...
myapp.datasource.driver-class-name=com.mysql.jdbc.Driver
但我实际上是将它们用于我自己的数据源和我自己的配置,如下所示:
@Configuration
@PropertySource("classpath:credentials.properties")
public class DataSourceConfig {
@Primary
@Bean(name = "dataSource")
@ConfigurationProperties(prefix = "myapp.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
}
据我所知,Spring Session 正在创建自己的数据源,而不是使用我的数据源。有没有办法让它改用我的?
(我的真实数据源有一些额外的配置,这里没有显示 Hikari)
Spring 会话本身不会创建 DataSource
而是使用应用程序上下文中存在的会话,如果它是:
- 唯一的
DataSource
豆
DataSource
标记为 @Primary
此外,如果您希望为 Spring 会话使用特定的 DataSource
(例如,如果您的应用程序中有多个 DataSource
),您可以通过以下方式实现:
- 注释
DataSource
被 @SpringSessionDataSource
标记为 Spring 会话(Spring 会话 2.0 以后)
- 提供
JdbcTemplate
使用所需 DataSource
的 bean 并将其命名为 springSessionJdbcOperations
(Spring 会话 1.x)
Spring Session JDBC 配置功能和逻辑应该很容易从 JdbcHttpSessionConfiguration
中理解。
我正在尝试同时使用 Spring 引导和 Spring 会话,特别是使用 JDBC。
只需在 application.properties 中添加行:
spring.session.store-type=jdbc
让它正常工作,这很好,因为我碰巧在该文件中也有一些数据源属性,即
myapp.datasource.url=jdbc:mysql://localhost/etc...
myapp.datasource.driver-class-name=com.mysql.jdbc.Driver
但我实际上是将它们用于我自己的数据源和我自己的配置,如下所示:
@Configuration
@PropertySource("classpath:credentials.properties")
public class DataSourceConfig {
@Primary
@Bean(name = "dataSource")
@ConfigurationProperties(prefix = "myapp.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
}
据我所知,Spring Session 正在创建自己的数据源,而不是使用我的数据源。有没有办法让它改用我的? (我的真实数据源有一些额外的配置,这里没有显示 Hikari)
Spring 会话本身不会创建 DataSource
而是使用应用程序上下文中存在的会话,如果它是:
- 唯一的
DataSource
豆 DataSource
标记为@Primary
此外,如果您希望为 Spring 会话使用特定的 DataSource
(例如,如果您的应用程序中有多个 DataSource
),您可以通过以下方式实现:
- 注释
DataSource
被@SpringSessionDataSource
标记为 Spring 会话(Spring 会话 2.0 以后) - 提供
JdbcTemplate
使用所需DataSource
的 bean 并将其命名为springSessionJdbcOperations
(Spring 会话 1.x)
Spring Session JDBC 配置功能和逻辑应该很容易从 JdbcHttpSessionConfiguration
中理解。