簡単な紹介
私たちはあまりにも多くのデータ・ソース構成を持っていると信じて、または構成し、複数のデータ友人にについて、あなたはいくつかのオプションがありますについてのオンライン見つけます:
- 動的データ・ソースを切り替える1. AOPスライス
- 2.
MapperScan
のbasePackages
異なる設定ディレクトリとテンプレートマッパー - 3.データベースエージェントのミドルウェアこれらの2つの方法は、複数のデータソースを達成したが欠点を持つことができます。
- 1.複数のデータソースを達成することができない
XA
もの(物事グローバル経営|JTA
)この欠点は非常に致命的な、データ・ソースの数が、グローバルなもので、その後、どのように使用することは純粋にピットの父ですが、この設定を使用したポストオンラインチュートリアルの多くは、やや単純だが、そこにありますあなたはグローバルなものに使用したい場合、彼らは使用しませんでした。 - このように2を組み合わせることができる
JTA
グローバルな事を達成するために、それが現在のラインのいくつかの試運転および運用・保守疑いが困っている小さな問題が発生した後、オンライン、このように実行するための事業をも使用されています!あなたは統合する必要性満たすdruid
接続プールを、そしてあなたがプロセスを追跡するためにグローバルなオンラインの記事は、まだいくつかのマイナーな問題で仕上げに多かれ少なかれそう行く何かを見つけた場合。 - 3.データ・ソース・エージェントは、主に巨大企業が、ビジネスの人々と開発者は、このよう、これらの問題を考慮する必要があり、かつカットプロキシ接続プールを達成することができます使用して、非常に存在している、良い一つの方法かもしれません厄介な質問は、オープンソースの多くは、自分のビジネスに適していませんので、うまく動作しない、と自分自身を開発するためにはコストが高すぎる現実的ではないです。
私は問題を考えているこの時間は、なぜないの導入に直接依存し、他の言語のフレームワークのようにyml
、まだその上にコンフィギュレーションファイル、すべての今、ミニマリストプログラムを持っています。
送信元アドレス
私はあなたがどのようなスターは、フォローアップ他の依存を簡単に統合に参加するサポートすることができます願っています。github.com/louislivi/f ...
始めます
バージョン:
springboot:2.0+
依存性の導入:
Maven
<dependency>
<groupId>com.louislivi.fastdep</groupId>
<artifactId>fastdep-datasource</artifactId>
<version>1.0.1</version>
</dependency>
复制代码
Gradle
compile group: 'com.louislivi.fastdep', name: 'fastdep-datasource', version: '1.0.1'
复制代码
application.yml
プロファイル:
fastdep:
datasource:
test: #数据源名称可随意取
mapper: com.louislivi.fastdep.test.mapper.test #当前数据源对应的mapper目录不能多个数据源相同
password: 123456
url: jdbc:mysql://127.0.0.1:3306/douyin?serverTimezone=Asia/Chongqing&useLegacyDatetimeCode=false&nullNamePatternMatchesAll=true&zeroDateTimeBehavior=CONVERT_TO_NULL&tinyInt1isBit=false&autoReconnect=true&useSSL=false&pinGlobalTxToPhysicalConnection=true
driverClassName: com.mysql.cj.jdbc.Driver
username: root
# # 下面为druid连接池的补充设置
# initialSize: 10
# minIdle: 5
# maxActive: 100
# connectionInitSqls: 'set names utf8mb4;'
test2: #数据源名称可随意取
mapper: com.louislivi.fastdep.test.mapper.test2 #当前数据源对应的mapper目录不能多个数据源相同
password: 123456
url: jdbc:mysql://127.0.0.1:3306/test2?serverTimezone=Asia/Chongqing&useLegacyDatetimeCode=false&nullNamePatternMatchesAll=true&zeroDateTimeBehavior=CONVERT_TO_NULL&tinyInt1isBit=false&autoReconnect=true&useSSL=false&pinGlobalTxToPhysicalConnection=true
driverClassName: com.mysql.cj.jdbc.Driver
username: root
# # 下面为druid连接池的补充设置
# initialSize: 10
# minIdle: 5
# maxActive: 100
# connectionInitSqls: 'set names utf8mb4;'
复制代码
これは終わりですか?はいそれは簡単です。非常に簡単ではありません、あなたはトリックは、それがされている場合は、設定ファイルに追加されてきた教えることです同様の投稿ができますオンラインに行くMapperScan
たびに、彼らは追加し、データソースに追加しjava
たクラスを。
原則
使用しImportBeanDefinitionRegistrar
BeanDefinitionBuilder.genericBeanDefinition
、動的注入は、Bean
ソースを見て行くことができます興味を持っている実際には非常に簡単です。
遂に
私は、追加の質問は完全な防止に投稿したpom.xml
導入の下での信頼を:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>com.louislivi.fastdep</groupId>
<artifactId>fastdep-datasource</artifactId>
<version>1.0.1</version>
</dependency>
</dependencies>
复制代码
私は小さな星に、フォローアップは現在、複数のデータの継続的なサポートを他の依存統合と最適化を開発していきます、あなたはオープンソースをサポートすることを願ってHibernate
、そして他のフレームワークとでも互換性があります。fastdep
してみましょうjava
簡単に依存している統合。ここにも同じような考えを持つ募集coder
プロジェクトを改善するために一緒に。