【发布时间】:2017-02-17 16:40:19
【问题描述】:
我正在使用现有的 Spring Boot 应用程序。 application.properties 文件指定一个“spring.datasource”数据库。通过 Spring 的魔力,这个数据源被以下 NamedParameterJdbcTemplate 在整个代码中使用:
@Autowired
NamedParameterJdbcTemplate namedJdbcTemplate;
我需要访问其他数据源。我将数据库属性添加到 application.properties 文件中。然后我将 Configure.java 文件修改为如下所示:
@Primary
@Bean(name = "dataSource")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "namedJdbcTemplate")
public NamedParameterJdbcTemplate namedJdbcTemplate(@Qualifier("dataSource") DataSource dataSource) {
return new NamedParameterJdbcTemplate(dataSource);
}
@Bean(name = "dbiSupportDataSource")
@ConfigurationProperties(prefix = "spring.dbisupport")
public DataSource dbiSupportDataSource() {
return DataSourceBuilder.create().build();
}
我将自动连接保留到namedJdbcTemplate,并将自动连接添加到我的新数据源:
@Autowired
NamedParameterJdbcTemplate namedJdbcTemplate;
@Autowired
DataSource dbiSupportDataSource;
使用此代码,对新数据库源的 SQL 查询会导致如下错误:
错误的 SQL 语法 [SELECT * FROM
support.core.table]
如果我从 Configure.java 文件中注释掉原始数据源和namedJdbcTemplate,则相同的 SQL 查询可以成功运行。
我还会注意到,即使我添加了新的数据源,对 namedJdbcTemplate 的 SQL 查询也会继续成功运行。
我在设置新数据源时是否做错了什么?我需要将我的 SQL 查询更改为新的数据源吗?
【问题讨论】: