我有一个数据库访问模块,可以与多种类型的数据源进行交互。
某些更高级的模块使用数据库模块而不与JDBC数据源交互。因此,我希望将数据源定义为惰性。但是,我还定义了一个事务管理器,我无法将其定义为惰性,因为它不是我代码中的直接依赖项。由于事务管理器依赖于数据源,因此始终会创建后者。
@Configuration
@EnableTransactionManagement
public class SpringConfig {
@Bean(destroyMethod = "close")
@Lazy
@Autowired
public DataSource dataSource() throws Exception {
//create data source
}
@Bean
@Lazy
@Autowired
public PlatformTransactionManager txManager() throws Exception {
DataSourceTransactionManager txManager = new DataSourceTransactionManager(dataSource());
return txManager;
}
}
@Lazy
@Repository("FundRepository")
public class MyRepository {
private JdbcTemplate jdbcTemplate;
@Autowired
public void setDataSource(DataSource dataSource) {
jdbcTemplate = new JdbcTemplate(dataSource);
}
}
知道如何使这项工作吗?