Spring Boot和Spring Session:如何控制DataSource

问题描述 投票:0回答:1

我正在一起试验Spring Boot和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 spring-boot spring-session
1个回答
2
投票

Spring Session本身不会创建DataSource,而是使用应用程序上下文中存在的那个,如果它是:

  • 唯一的DataSource
  • DataSource标记为@Primary

此外,如果您希望在Spring Session中使用特定的DataSource(例如,如果您的应用程序中有多个DataSources),您可以通过以下方式执行此操作:

  • 标记为DataSource指定的@SpringSessionDataSource(春季会议2.0以后)
  • 提供JdbcTemplate bean使用所需的DataSource并命名为springSessionJdbcOperations(Spring Session 1.x)

Spring会话JDBC配置功能和逻辑应该很容易理解来自JdbcHttpSessionConfiguration

© www.soinside.com 2019 - 2024. All rights reserved.