springboot集成多数据源jdbc-neo4j,mysql
时间: 2024-02-17 11:31:31 浏览: 179
Spring Boot 中集成多数据源可以通过配置多个数据源的方式实现。下面是集成 JDBC 和 Neo4j、MySQL 的示例:
1. 添加依赖
在 pom.xml 文件中添加以下依赖:
```
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- Neo4j -->
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>4.3.2</version>
</dependency>
```
2. 配置数据源
在 application.properties 或 application.yml 文件中配置数据源。
```
# MySQL
spring.datasource.url=jdbc:mysql://localhost:3306/db1?useSSL=false
spring.datasource.username=root
spring.datasource.password=root
# Neo4j
spring.data.neo4j.uri=bolt://localhost:7687
spring.data.neo4j.username=neo4j
spring.data.neo4j.password=admin
```
3. 配置数据源 bean
在配置类中配置数据源 bean,使用 @Primary 注解标记默认数据源。
```
@Configuration
public class DataSourceConfig {
// MySQL 数据源
@Bean(name = "mysqlDataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource mysqlDataSource() {
return DataSourceBuilder.create().build();
}
// Neo4j 数据源
@Bean(name = "neo4jDataSource")
@ConfigurationProperties(prefix = "spring.data.neo4j")
public DataSource neo4jDataSource() {
return new DriverDataSource(GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "admin")));
}
}
```
4. 配置 JdbcTemplate
在配置类中配置 JdbcTemplate,分别使用 @Qualifier 注解指定数据源 bean。
```
@Configuration
public class JdbcTemplateConfig {
// MySQL JdbcTemplate
@Bean(name = "mysqlJdbcTemplate")
public JdbcTemplate mysqlJdbcTemplate(@Qualifier("mysqlDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
// Neo4j JdbcTemplate
@Bean(name = "neo4jJdbcTemplate")
public JdbcTemplate neo4jJdbcTemplate(@Qualifier("neo4jDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
```
5. 使用 JdbcTemplate
在需要使用 JdbcTemplate 的地方,使用 @Qualifier 注解指定对应的数据源 bean。
```
@Service
public class UserService {
@Autowired
@Qualifier("mysqlJdbcTemplate")
private JdbcTemplate mysqlJdbcTemplate;
@Autowired
@Qualifier("neo4jJdbcTemplate")
private JdbcTemplate neo4jJdbcTemplate;
public void getUser() {
// 使用 MySQL JdbcTemplate 查询用户
mysqlJdbcTemplate.queryForObject("SELECT * FROM user WHERE id = ?", new Object[]{1}, (rs, rowNum) -> {
// do something
});
// 使用 Neo4j JdbcTemplate 查询用户
neo4jJdbcTemplate.queryForObject("MATCH (u:User {id: $id}) RETURN u", Collections.singletonMap("id", 1), (rs, rowNum) -> {
// do something
});
}
}
```
阅读全文