春ブーツは、複数のデータソースを統合JdbcTemplate

プロジェクトを作成します。

最初は下に示すように、プロジェクトを作成し、そして以前に、プロジェクトを作成するだけでなく、駆動型Web、JDBCおよびMySQLを選択することです:

依存性の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>

注:なしデータソースインスタンスのドルイド伝統は、あなたが私たち自身を設定する必要があるという伝統的なドルイドよりも、アリババのドルイド・春・ブート・スターターを使用して、ここでドルイド、推奨されません。のでdruid-spring-boot-starter依存性がDruidDataSourceBuilderクラスを提供され、この例では、DataSourceを構築するために使用することができます

データ・ソース構成

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

ここでは一つのデータソースと2つの区別が、(前回のキーが変更されたため)1と2を添加した後、ここで設定が自動的にロードされSpringBootではないでしょう、私たちは彼らのデータソースをロードする必要があり、この時点で次のように、あなたは、2のDataSourceビーンを提供するために、自分自身DataSourceConfigを設定する必要があります。
 

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

ここでスプリングブート最初Beanに設けバインドされ、型安全性、例えば、@ConfigurationProperties(接頭辞=「spring.datasource.one」)指示spring.datasource.oneある@ConfigurationProperties 2豆、ありますデータソースを作成するには、データベース構成の接頭辞、この設定の後、我々は二つの異なるデータソースを持って、2つの異なるJdbcTemplateを作成するために、2つの異なるデータソースを追いました。

JdbcTemplateの設定例

以下のように、二つの異なるJdbcTemplateの例を提供するために、JdbcTemplateConfigクラスを作成します。

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

各JdbcTemplate、データソースを作成Springコンテナは現在2のDataSourceがあるので、デフォルトの選択肢タイプを使用する必要が、そう@Qualifierコメントを追加するには、文句を言うでしょう、名前で検索を意味します。ここJdbcTemplateは、それぞれ二つのデータソースに対応し、2つのインスタンスを作成します。そして、このJdbcTemplateそれの使用に直接アクセスしてください。

テスト

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

そしてデータソース - 、Springコンテナはまた、2つのJdbcTemplateを持って、注射の方法により、ここで皆に来るbyTypeすることはできません追加、2つの注入アイデアはBYNAMEの方法を介して直接に注入@Resource注釈を使用することです提供一つは@Autowiredノートプラス@Qualifier注釈、両方一緒に、実際にBYNAMEです。JdbcTemplateが来る注射後、jdbcTemplateOneとjdbcTemplateTwoケースは、マルチデータソースの構成を実現するために、JdbcTemplate操作を使用してソースデータ、異なるデータソースに異なる動作を表します。

概要

実際の開発ニーズが比較的単純であり、分散データベースの推奨選択はミドルウェアMyCat分散場合に関連する問題を解決するために、この複数のデータソースの構成を使用できる場合は、ときにいくつかの複数のデータソース、使用MyCatの使用、ならびにサブテーブル簡単に複数のデータソースを使用してシャーディング・バイ・intfileブートよりを使用しての戦略。

参考住所:https://blog.csdn.net/u012702547/article/details/102968669

公開された260元の記事 ウォンの賞賛112 ビュー260 000 +

おすすめ

転載: blog.csdn.net/qq_34491508/article/details/103854512