【发布时间】:2014-11-05 02:08:52
【问题描述】:
我在 Spring 4.0.3 配置中支持以下 JAVA,它们有两个 DataSource 和 JdbcTemplate bean:
@PropertySource("classpath:db.properties")
@Configuration
public class DBConfiguration {
.....
@Autowired
Environment env;
@Bean
public DataSource internalDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
// init dataSource setters for DATABASE_1
return dataSource;
}
@Bean
public DataSource publicDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
// init dataSource setters for DATABASE_2
return dataSource;
}
}
... @豆角,扁豆 公共 JdbcTemplate internalJDBCTemplate() { 返回新的 JdbcTemplate(internalDataSource()); }
@Bean
public JdbcTemplate publicJDBCTemplate() {
return new JdbcTemplate(publicDataSource());
}
___
我还有其他配置 bean 类,它自动装配第一个配置并调用 internalDataSource() 方法:
@Import(DBConfiguration.class)
@Configuration
public class AuthConfiguration {
@Autowired
private DBConfiguration dbConfiguration;
@Autowired
private TokenStore tokenStore;
@Bean
public TokenStore tokenStore() {
return new JdbcTokenStore(dbConfiguration.securityDataSource());
}
...}
我想,即使 DBConfiguration 被导入并自动连接到 AuthConfiguration 类中,每次调用 dbConfiguration.securityDataSource() 都会导致新的 DriverManagerDataSource() 每次初始化数据源。
是否正确?
【问题讨论】: