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-starter
se 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