[Spring Boot] Plantilla de conexión de datos JdbcTemplate: combate práctico: implementación de múltiples fuentes de datos de JdbcTemplate

Combate práctico: implementación de múltiples fuentes de datos de JdbcTemplate

1. ¿Qué son las múltiples fuentes de datos?

Las llamadas fuentes de datos múltiples en realidad significan el uso de bases de datos en múltiples instancias de bases de datos o múltiples bibliotecas diferentes en la misma instancia de base de datos en un proyecto.

En el desarrollo real, puede encontrar situaciones en las que es necesario configurar múltiples fuentes de datos, por ejemplo, el proyecto necesita usar múltiples bases de datos, como bases de datos comerciales y bases de datos de registros, o necesita usar múltiples bases de datos (como MySQL, Oracle, SQL Server). , etc.).

La configuración de múltiples fuentes de datos de JdbcTemplate es relativamente simple, porque una instancia de JdbcTemplate corresponde a un DataSource. Los desarrolladores solo necesitan proporcionar manualmente múltiples fuentes de datos y luego configurar manualmente las instancias de JdbcTemplate correspondientes. Utilice la instancia de JdbcTemplate correspondiente para la cual se necesita la fuente de datos. operado.

2. Configurar JdbcTemplate múltiples fuentes de datos

Paso 01 Configurar múltiples fuentes de datos.

Modifique el archivo application.properties y configure la conexión de la fuente de datos. El código de muestra es el siguiente:

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

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

Demuestre la situación de múltiples bases de datos a través de dos bases de datos, jdbc_test y jdbc_test2. Podemos ver que la configuración anterior es algo diferente de la configuración original de fuente de datos única:

1) Se agregan dos fuentes de datos al archivo de configuración application.properties, distinguidas por primaria y secundaria, correspondientes a las bases de datos jdbc_test y jdbc_test2 respectivamente.

2) La conexión de base de datos de una única fuente de datos utiliza el elemento de configuración spring.datasource.url, y las múltiples fuentes de datos utilizan el elemento de configuración spring.datasource.*.jdbc-url.

Paso 02 Configurar la inicialización de JDBC.

Cree la clase DataSourceConfig, lea la información de la base de datos en el archivo de configuración cuando se inicie el proyecto e inicialice JDBC. El código específico es el siguiente:

@Configuration
public class DataSourceConfig {
    
    
    @Primary
    @Bean(name = "primaryDataSource" )
    @Qualifier("primaryDataSource" )
    @ConfigurationProperties(prefix = "spring.datasource.primary" )
    public DataSource primaryDataSource() {
    
    
        return DataSourceBuilder.create().build();
    }

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

    @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);
    }
}

En el ejemplo anterior, la función de la clase DataSourceConfig es cargar diferentes fuentes de datos según prefijos específicos cuando se inicia el proyecto y luego crear diferentes JdbcTemplates según las fuentes de datos construidas. Dado que hay dos fuentes de datos en el contenedor Spring, se informará un error al buscar utilizando el tipo predeterminado, por lo que se agrega la anotación @Qualifier para indicar la búsqueda por nombre. Aquí se crean dos instancias de JdbcTemplate, correspondientes a dos fuentes de datos respectivamente.

Cabe señalar que cuando se utilizan múltiples fuentes de datos, es necesario agregar la anotación @Primary, lo que significa que cuando aparecen varios candidatos de Bean durante el ensamblaje automático, el Bean anotado con @Primary será la primera opción. Primario significa "principal", similar a la "Clave principal" en la declaración SQL. Solo puede haber una, de lo contrario se informará un error.

Paso 03 Utilice múltiples fuentes de datos.

¿Cómo usarlo una vez completada la configuración? Los siguientes ejemplos de pruebas unitarias demuestran el uso de múltiples fuentes de datos. Inyecte instancias de JdbcTemplate de dos fuentes de datos diferentes en la columna de prueba, pruebe usando diferentes JdbcTemplate para insertar dos datos y verifique si todos se guardaron correctamente en las dos bases de datos. El código de muestra es el siguiente:

 @Autowired
    private JdbcTemplate primaryJdbcTemplate;
    @Autowired
    private JdbcTemplate secondaryJdbcTemplate;
    @Test
    public void dataSourceTest() {
    
    
        Student student = new Student("多数据源", 0, 30);
        primaryJdbcTemplate.update("INSERT INTO Student(name, sex, age) values(?, ?, ?)",
                student.getName(), student.getSex(), student.getAge());
        secondaryJdbcTemplate.update("INSERT INTO Student(name sex, age) values(?, ?, ?)",
                student.getName(), student.getSex(), student.getAge());
    }

Haga clic en Ejecutar prueba o haga clic derecho en el método y seleccione Ejecutar 'save2' para ejecutar el método de prueba.

Después de ejecutar la prueba unitaria dataSourceTest(), vimos que el sistema creó automáticamente dos conexiones de base de datos, HikariPool-1 y HikariPool-2. Verifique si hay datos llamados "Múltiples fuentes de datos" en las tablas de estudiantes en las bases de datos jdbc_test y jdbc_test2. Si es así, significa que las múltiples fuentes de datos se configuraron correctamente. Otros métodos se prueban de manera muy similar.

En proyectos de desarrollo reales, la base de datos empresarial y la base de datos de registros se pueden separar mediante la implementación de múltiples fuentes de datos.

Supongo que te gusta

Origin blog.csdn.net/weixin_45627039/article/details/132407156
Recomendado
Clasificación