From e975dfd9f3770f786a7b762bcdd48f4ecec3b565 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E7=8C=BFDD?= Date: Sun, 27 Mar 2016 20:39:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=EF=BC=8C=E6=9C=AA?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Chapter3-2-4/pom.xml | 61 +++++++++++++++++++ .../main/java/com/didispace/Application.java | 20 ++++++ .../java/com/didispace/DataSourceConfig.java | 49 +++++++++++++++ .../src/main/resources/application.properties | 9 +++ .../java/com/didispace/ApplicationTests.java | 51 ++++++++++++++++ 5 files changed, 190 insertions(+) create mode 100755 Chapter3-2-4/pom.xml create mode 100755 Chapter3-2-4/src/main/java/com/didispace/Application.java create mode 100644 Chapter3-2-4/src/main/java/com/didispace/DataSourceConfig.java create mode 100755 Chapter3-2-4/src/main/resources/application.properties create mode 100755 Chapter3-2-4/src/test/java/com/didispace/ApplicationTests.java diff --git a/Chapter3-2-4/pom.xml b/Chapter3-2-4/pom.xml new file mode 100755 index 0000000..cdb4d43 --- /dev/null +++ b/Chapter3-2-4/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + + com.didispace + demo + 1.0.0 + jar + + demo + Spring Boot project + + + org.springframework.boot + spring-boot-starter-parent + 1.3.2.RELEASE + + + + + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + + mysql + mysql-connector-java + 5.1.21 + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/Chapter3-2-4/src/main/java/com/didispace/Application.java b/Chapter3-2-4/src/main/java/com/didispace/Application.java new file mode 100755 index 0000000..c8fee3c --- /dev/null +++ b/Chapter3-2-4/src/main/java/com/didispace/Application.java @@ -0,0 +1,20 @@ +package com.didispace; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Primary; +import org.springframework.jdbc.core.JdbcTemplate; + +import javax.sql.DataSource; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/Chapter3-2-4/src/main/java/com/didispace/DataSourceConfig.java b/Chapter3-2-4/src/main/java/com/didispace/DataSourceConfig.java new file mode 100644 index 0000000..9622419 --- /dev/null +++ b/Chapter3-2-4/src/main/java/com/didispace/DataSourceConfig.java @@ -0,0 +1,49 @@ +package com.didispace; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.jdbc.core.JdbcTemplate; + +import javax.sql.DataSource; + +/** + * @author 程序猿DD + * @version 1.0.0 + * @date 16/3/26 下午9:11. + * @blog http://blog.didispace.com + */ +@Configuration +public class DataSourceConfig { + + @Bean(name = "primaryDataSource") + @Qualifier("primaryDataSource") + @ConfigurationProperties(prefix="spring.datasource.primary") + public DataSource primaryDataSource() { + return DataSourceBuilder.create().build(); + } + + @Bean(name = "secondaryDataSource") + @Qualifier("secondaryDataSource") + @Primary + @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); + } + +} diff --git a/Chapter3-2-4/src/main/resources/application.properties b/Chapter3-2-4/src/main/resources/application.properties new file mode 100755 index 0000000..b437ea4 --- /dev/null +++ b/Chapter3-2-4/src/main/resources/application.properties @@ -0,0 +1,9 @@ +spring.datasource.primary.url=jdbc:mysql://localhost:3306/test1 +spring.datasource.primary.username=root +spring.datasource.primary.password=root +spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver + +spring.datasource.secondary.url=jdbc:mysql://localhost:3306/test2 +spring.datasource.secondary.username=root +spring.datasource.secondary.password=root +spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver diff --git a/Chapter3-2-4/src/test/java/com/didispace/ApplicationTests.java b/Chapter3-2-4/src/test/java/com/didispace/ApplicationTests.java new file mode 100755 index 0000000..f8e99e6 --- /dev/null +++ b/Chapter3-2-4/src/test/java/com/didispace/ApplicationTests.java @@ -0,0 +1,51 @@ +package com.didispace; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(Application.class) +public class ApplicationTests { + + @Autowired + @Qualifier("primaryJdbcTemplate") + protected JdbcTemplate jdbcTemplate1; + + @Autowired + @Qualifier("secondaryJdbcTemplate") + protected JdbcTemplate jdbcTemplate2; + + @Before + public void setUp() { + jdbcTemplate1.update("DELETE FROM USER "); + jdbcTemplate2.update("DELETE FROM USER "); + } + + @Test + public void test() throws Exception { + + // 往第一个数据源中插入两条数据 + jdbcTemplate1.update("insert into user(id,name,age) values(?, ?, ?)", 1, "aaa", 20); + jdbcTemplate1.update("insert into user(id,name,age) values(?, ?, ?)", 2, "bbb", 30); + + // 往第二个数据源中插入一条数据,若插入的是第一个数据源,则会主键冲突报错 + jdbcTemplate2.update("insert into user(id,name,age) values(?, ?, ?)", 1, "aaa", 20); + + // 查一下第一个数据源中是否有两条数据,验证插入是否成功 + Assert.assertEquals("2", jdbcTemplate1.queryForObject("select count(1) from user", String.class)); + + // 查一下第一个数据源中是否有两条数据,验证插入是否成功 + Assert.assertEquals("1", jdbcTemplate2.queryForObject("select count(1) from user", String.class)); + + } + + +}