Spring Boot具有很强的扩展性和灵活性,可以轻松地实现多数据源的配置。下面我将分享一个完整的“Spring Boot配置多数据源代码实例”的攻略,步骤如下:
1.在pom.xml中添加如下配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
第一个依赖是Spring Boot JDBC的启动器,第二个依赖是MySQL的连接器,第三个依赖是Druid数据源的启动器。
2.在application.yml中配置第一个数据源:
spring:
datasource:
url: jdbc:mysql://localhost:3306/first_db
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
这里使用的是MySQL数据库,用户名和密码为root,数据库名为first_db。
3.创建第一个数据源的配置类:
@Configuration
public class FirstDataSourceConfig {
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public DataSource firstDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.druid.first")
public DruidDataSource firstDruidDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
public JdbcTemplate firstJdbcTemplate(@Qualifier("firstDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
此类使用@Configuration注释来进行配置,@Bean注释是用来创建DataSource和JdbcTemplate的。
4.在application.yml中配置第二个数据源:
second.datasource.url: jdbc:mysql://localhost:3306/second_db
second.datasource.username: root
second.datasource.password: root
second.datasource.driverClassName: com.mysql.cj.jdbc.Driver
这里使用的是MySQL数据库,用户名和密码为root,数据库名为second_db。
5.创建第二个数据源的配置类:
@Configuration
public class SecondDataSourceConfig {
@Bean
@ConfigurationProperties("second.datasource")
public DataSource secondDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
public JdbcTemplate secondJdbcTemplate(@Qualifier("secondDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
此类也使用@Configuration注释来进行配置,@Bean注释是用来创建DataSource和JdbcTemplate的。
6.在代码中使用两个不同的数据源:
@RestController
public class UserController {
@Autowired
private JdbcTemplate firstJdbcTemplate;
@Autowired
private JdbcTemplate secondJdbcTemplate;
@GetMapping("/users")
public List<String> getUsers() {
List<String> users = new ArrayList<>();
users.addAll(firstJdbcTemplate.queryForList("select name from user", String.class));
users.addAll(secondJdbcTemplate.queryForList("select name from user", String.class));
return users;
}
}
此类使用@RestController注释来实现REST接口。它使用@Autowired注释来获取第一个和第二个JdbcTemplate。
以上就是“Spring Boot配置多数据源代码实例”的完整攻略。下面分别举两个示例来说明具体操作:
示例1:在application.yml中配置两个数据源
spring:
datasource:
url: jdbc:mysql://localhost:3306/first_db
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
second.datasource:
url: jdbc:mysql://localhost:3306/second_db
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
在代码中使用两个不同的数据源:
@RestController
public class UserController {
@Autowired
@Qualifier("firstJdbcTemplate")
private JdbcTemplate firstJdbcTemplate;
@Autowired
@Qualifier("secondJdbcTemplate")
private JdbcTemplate secondJdbcTemplate;
@GetMapping("/users")
public List<String> getUsers() {
List<String> users = new ArrayList<>();
users.addAll(firstJdbcTemplate.queryForList("select name from user", String.class));
users.addAll(secondJdbcTemplate.queryForList("select name from user", String.class));
return users;
}
}
示例2:在pom.xml中添加两个数据源
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
在application.yml中配置两个数据源:
spring:
datasource:
url: jdbc:mysql://localhost:3306/first_db
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
second.datasource:
url: jdbc:mysql://localhost:3306/second_db
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
创建第一个数据源的配置类:
@Configuration
public class FirstDataSourceConfig {
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public DataSource firstDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.druid.first")
public DruidDataSource firstDruidDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
public JdbcTemplate firstJdbcTemplate(@Qualifier("firstDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
创建第二个数据源的配置类:
@Configuration
public class SecondDataSourceConfig {
@Bean
@ConfigurationProperties("second.datasource")
public DataSource secondDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
public JdbcTemplate secondJdbcTemplate(@Qualifier("secondDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
在代码中使用两个不同的数据源:
@RestController
public class UserController {
@Autowired
private JdbcTemplate firstJdbcTemplate;
@Autowired
private JdbcTemplate secondJdbcTemplate;
@GetMapping("/users")
public List<String> getUsers() {
List<String> users = new ArrayList<>();
users.addAll(firstJdbcTemplate.queryForList("select name from user", String.class));
users.addAll(secondJdbcTemplate.queryForList("select name from user", String.class));
return users;
}
}
以上就是两个实例,分别是在application.yml中配置两个数据源和在pom.xml中添加两个数据源。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring boot配置多数据源代码实例 - Python技术站