Primavera de arranque integrar múltiples fuentes de datos JdbcTemplate

crear proyecto

En primer lugar es la creación de un proyecto, y como antes, crear proyectos, sino también seleccionar Web, JDBC y MySQL impulsados, como se muestra a continuación:

La dependencia sigue 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-web</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.28</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>

Nota: druida aquí usando druida-primavera-arranque-motor de arranque de Alibaba, en lugar de la tradicional druida, la tradición druida de ninguna instancia de origen de datos, es necesario configurar la nuestra, no es recomendable. Debido a que la druid-spring-boot-starterse proporciona la dependencia clases DruidDataSourceBuilder, este ejemplo se puede utilizar para construir un DataSource

configuración de la fuente de datos

spring.datasource.one.url=jdbc:mysql:///test01?useUnicode=true&characterEncoding=utf-8
spring.datasource.one.username=root
spring.datasource.one.password=root
spring.datasource.one.type=com.alibaba.druid.pool.DruidDataSource

spring.datasource.two.url=jdbc:mysql:///test02?useUnicode=true&characterEncoding=utf-8
spring.datasource.two.username=root
spring.datasource.two.password=root
spring.datasource.two.type=com.alibaba.druid.pool.DruidDataSource

Aquí por una fuente de datos y dos distinción, pero después de la adición de uno y dos, la configuración aquí no sería SpringBoot automáticamente cargado (porque se cambia la clave anterior), tenemos que cargar su origen de datos, esta vez , es necesario configurar usted mismo un DataSourceConfig, para proporcionar dos DataSource Bean, de la siguiente manera:
 

@Configuration
public class DataSourceConfig {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.one")
    DataSource dsOne() {
        return DruidDataSourceBuilder.create().build();
    }
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.two")
    DataSource dsTwo() {
        return DruidDataSourceBuilder.create().build();
    }
}

Aquí están dos Bean, que @ConfigurationProperties es característica de tipo seguro está obligado resorte de arranque proporcionado a la primera Bean, por ejemplo, @ConfigurationProperties (prefijo = "spring.datasource.one") spring.datasource.one indicación base de datos de configuración de prefijo para crear un origen de datos, después de esta configuración, tenemos dos DataSource diferente, entonces seguido dos DataSource diferente para crear dos diferentes JdbcTemplate.

ejemplos de configuración JdbcTemplate

Crear clase JdbcTemplateConfig, para proporcionar dos ejemplos JdbcTemplate diferente, de la siguiente manera

@Configuration
public class JdbcTemplateConfig {
    @Bean
    JdbcTemplate jdbcTemplateOne(@Qualifier("dsOne") DataSource dsOne) {
        return new JdbcTemplate(dsOne);
    }
    @Bean
    JdbcTemplate jdbcTemplateTwo(@Qualifier("dsTwo") DataSource dsTwo) {
        return new JdbcTemplate(dsTwo);
    }
}

Cada JdbcTemplate la necesidad de crear un origen de datos, debido a que el contenedor de primavera Ahora hay dos origen de datos, utilice el tipo de búsqueda por defecto, se quejará, por lo que añadir @Qualifier comentario, significa la búsqueda por su nombre. Aquí JdbcTemplate crea dos casos, que corresponden respectivamente a los dos DataSource. A continuación, vaya directamente al uso de este JdbcTemplate ella.

prueba

@RestController
public class HelloController {
    @Autowired
    @Qualifier("jdbcTemplateOne")
    JdbcTemplate jdbcTemplateOne;
    @Resource(name = "jdbcTemplateTwo")
    JdbcTemplate jdbcTemplateTwo;

    @GetMapping("/user")
    public List<User> getAllUser() {
        List<User> list = jdbcTemplateOne.query("select * from t_user", new BeanPropertyRowMapper<>(User.class));
        return list;
    }
    @GetMapping("/user2")
    public List<User> getAllUser2() {
        List<User> list = jdbcTemplateTwo.query("select * from t_user", new BeanPropertyRowMapper<>(User.class));
        return list;
    }
}

Y la fuente de datos -, contenedor de primavera también tiene dos JdbcTemplate, no puede por medio de la inyección byType llegado a todo el mundo aquí proporciona dos inyección idea es utilizar las anotaciones @Resource directamente inyectados a través de Byname manera, adicional uno de ellos es @Autowired notas más @Qualifier anotación, los dos juntos, en realidad byname. Después de la inyección JdbcTemplate venir, jdbcTemplateOne y caso jdbcTemplateTwo representan operación diferente en los datos de origen, diferentes fuentes de datos utilizando operación JdbcTemplate, para lograr una configuración de múltiples fuente de datos.

resumen

Si las necesidades reales de desarrollo es relativamente simple y se puede usar esta configuración de múltiples fuentes de datos, si la opción recomendada para la base de datos distribuida distribuye Mycat middleware para resolver problemas relacionados, cuando varias fuentes de datos múltiples, el uso Mycat uso, así como subtabla las estrategias que utilizan sharding por intfile de arranque usando múltiples fuentes de datos más fácil.

Referencia Dirección: https://blog.csdn.net/u012702547/article/details/102968669

Publicados 260 artículos originales · ganado elogios 112 · vistas 260 000 +

Supongo que te gusta

Origin blog.csdn.net/qq_34491508/article/details/103854512
Recomendado
Clasificación