springboot多数据源配置之jdbcTemplate模板支持

写在前面:在平时项目过程当中,我们可能需要依赖多个数据源,使用多个数据库,那我们就需要配置多数据源。

1.application.properties
pring.datasource.primary.url=jdbc:mysql://localhost:3306/demo1
spring.datasource.primary.username=root
spring.datasource.primary.password=root
spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.secondary.url=jdbc:mysql://localhost:3306/demo2
spring.datasource.secondary.username=root
spring.datasource.secondary.password=root
spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver

2.配置类的编写
我们在单数据源的时候是不需要写配置类的,只需要写properties文件,因为springboot已经为我们做了这件事。
@Configuration
public class DataSourceConfig {
@Bean(name = "primaryDataSource")
@Qualifier("primaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}

@Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource")
@Primary
@ConfigurationProperties(prefix="spring.datasource.secondary")
public DataSource secondaryDataSource() {
    return DataSourceBuilder.create().build();
}

}

写到这里,想解释下@Configuration+@Bean注解的作用,@Configuration注解的是一个配置类,其实和@Component功能类似,在spring启动容器的时候,把类交给SpringIoc管理,@Bean实例化为一个对象,并且可以在注解的方法中设置属性等,我们上面这个例子实例化的是spring中的DataSource这个连接数据库的API。
使用了这对组合注解之后,我们就可以@Autowired DataSource datasource;

3.JdbcTemplate的不同数据源的配置
@Bean(name = "primaryJdbcTemplate")
public JdbcTemplate primaryJdbcTemplate(
@Qualifier("primaryDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}

@Bean(name = "secondaryJdbcTemplate")
public JdbcTemplate secondaryJdbcTemplate(
@Qualifier("secondaryDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
如果我们是单数据源的话,上面的配置也是不需要的。springboot为我们做了这件事。

4.测试
@Autowired
@Qualifier("primaryJdbcTemplate")
protected JdbcTemplate jdbcTemplate1;

@Autowired
@Qualifier("secondaryJdbcTemplate")
protected JdbcTemplate jdbcTemplate2;

@Before
public void setUp() {
    jdbcTemplate1.update("DELETE  FROM  USER ");
    jdbcTemplate2.update("DELETE  FROM  USER ");
}

即可。

你可能感兴趣的:(springboot多数据源配置之jdbcTemplate模板支持)