開始行: * キーワード [#w44ec138] - Spring Boot - Doma 2 - データソース * したいこと [#q35610e3] 複数のデータソースを設定したい。 ここではふたつのデータソースalphaとbetaがあるとして。 * どうやって [#w85cd438] ** プロパティファイルの設定 [#y70504c5] application.propertiesにalphaとbetaのプロパティを設定する。 spring.datasource.alpha.url=jdbc:mysql://... spring.datasource.alpha.username=... spring.datasource.alpha.password=... spring.datasource.alpha.driver-class-name=com.mysql.jdbc... spring.datasource.alpha.type=com.zaxxer.hikari.HikariDat... spring.datasource.beta.url=jdbc:mysql://... spring.datasource.beta.username=... spring.datasource.beta.password=... spring.datasource.beta.driver-class-name=com.mysql.jdbc.... spring.datasource.beta.type=com.zaxxer.hikari.HikariData... ** データソースの設定 [#bf648dee] *** alpha用データベースの設定 [#x103c562] package com.example.application.config.db import org.seasar.doma.jdbc.Config import org.seasar.doma.jdbc.dialect.Dialect import org.seasar.doma.jdbc.dialect.MysqlDialect import org.springframework.beans.factory.annotation.Qual... import org.springframework.context.annotation.Primary import org.springframework.stereotype.Component import javax.sql.DataSource @Primary @Component(AlphaDbConfig.name) class AlphaDbConfig( @Qualifier(AlphaDbDataSource.dataSource) private val... ): Config { companion object { const val name = "alphaDbConfig" } override fun getDialect(): Dialect = MysqlDialect() override fun getDataSource(): DataSource = dataSource override fun getDataSourceName(): String = name } *** alpha用データソースの設定 [#a36c7a3c] package com.example.application.config.db import org.springframework.beans.factory.annotation.Qual... import org.springframework.boot.autoconfigure.jdbc.DataS... import org.springframework.boot.context.properties.Confi... import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configurat... import org.springframework.context.annotation.Primary import org.springframework.jdbc.datasource.TransactionAw... import javax.sql.DataSource @Configuration class AlphaDbDataSource { companion object { const val dataSource = "dataSourceForAlpha" private const val dataSourceProperties = "dataSo... } @Primary @Bean(dataSource) @ConfigurationProperties(prefix = "spring.datasource... fun dataSourceForAlpha( @Qualifier(dataSourceProperties) properties: Dat... ): DataSource = TransactionAwareDataSourceProxy(prop... @Primary @Bean(dataSourceProperties) @ConfigurationProperties(prefix = "spring.datasource... fun dataSourcePropertiesForAlpha() = DataSourcePrope... } *** beta用データベースの設定 [#cd8e593e] alpha用データベースの設定から @Primary を除く。 *** beta用データソースの設定 [#n40dae69] beta用データソースの設定から @Primary を除く。 *** beta用Autowireableの作成 [#v8b54bf4] package com.example.application.config.db import org.seasar.doma.AnnotateWith import org.seasar.doma.Annotation import org.seasar.doma.AnnotationTarget import org.springframework.beans.factory.annotation.Auto... import org.springframework.beans.factory.annotation.Qual... import org.springframework.stereotype.Repository @AnnotateWith(annotations = [ Annotation(target = AnnotationTarget.CLASS, type = R... Annotation(target = AnnotationTarget.CONSTRUCTOR, ty... Annotation(target = AnnotationTarget.CONSTRUCTOR_PAR... ]) annotation class BetaDbConfigAutowireable ** アノテーションの設定 [#v0af7e0c] @ConfigAutowireable の代わりに @BetaDbConfigAutowireable ... @Dao @BetaDbConfigAutowireable public interface *Dao { ... } * ちなみに [#sb59e90b] Doma-GenなどのGradleタスクを別名で作るのがいい。 終了行: * キーワード [#w44ec138] - Spring Boot - Doma 2 - データソース * したいこと [#q35610e3] 複数のデータソースを設定したい。 ここではふたつのデータソースalphaとbetaがあるとして。 * どうやって [#w85cd438] ** プロパティファイルの設定 [#y70504c5] application.propertiesにalphaとbetaのプロパティを設定する。 spring.datasource.alpha.url=jdbc:mysql://... spring.datasource.alpha.username=... spring.datasource.alpha.password=... spring.datasource.alpha.driver-class-name=com.mysql.jdbc... spring.datasource.alpha.type=com.zaxxer.hikari.HikariDat... spring.datasource.beta.url=jdbc:mysql://... spring.datasource.beta.username=... spring.datasource.beta.password=... spring.datasource.beta.driver-class-name=com.mysql.jdbc.... spring.datasource.beta.type=com.zaxxer.hikari.HikariData... ** データソースの設定 [#bf648dee] *** alpha用データベースの設定 [#x103c562] package com.example.application.config.db import org.seasar.doma.jdbc.Config import org.seasar.doma.jdbc.dialect.Dialect import org.seasar.doma.jdbc.dialect.MysqlDialect import org.springframework.beans.factory.annotation.Qual... import org.springframework.context.annotation.Primary import org.springframework.stereotype.Component import javax.sql.DataSource @Primary @Component(AlphaDbConfig.name) class AlphaDbConfig( @Qualifier(AlphaDbDataSource.dataSource) private val... ): Config { companion object { const val name = "alphaDbConfig" } override fun getDialect(): Dialect = MysqlDialect() override fun getDataSource(): DataSource = dataSource override fun getDataSourceName(): String = name } *** alpha用データソースの設定 [#a36c7a3c] package com.example.application.config.db import org.springframework.beans.factory.annotation.Qual... import org.springframework.boot.autoconfigure.jdbc.DataS... import org.springframework.boot.context.properties.Confi... import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configurat... import org.springframework.context.annotation.Primary import org.springframework.jdbc.datasource.TransactionAw... import javax.sql.DataSource @Configuration class AlphaDbDataSource { companion object { const val dataSource = "dataSourceForAlpha" private const val dataSourceProperties = "dataSo... } @Primary @Bean(dataSource) @ConfigurationProperties(prefix = "spring.datasource... fun dataSourceForAlpha( @Qualifier(dataSourceProperties) properties: Dat... ): DataSource = TransactionAwareDataSourceProxy(prop... @Primary @Bean(dataSourceProperties) @ConfigurationProperties(prefix = "spring.datasource... fun dataSourcePropertiesForAlpha() = DataSourcePrope... } *** beta用データベースの設定 [#cd8e593e] alpha用データベースの設定から @Primary を除く。 *** beta用データソースの設定 [#n40dae69] beta用データソースの設定から @Primary を除く。 *** beta用Autowireableの作成 [#v8b54bf4] package com.example.application.config.db import org.seasar.doma.AnnotateWith import org.seasar.doma.Annotation import org.seasar.doma.AnnotationTarget import org.springframework.beans.factory.annotation.Auto... import org.springframework.beans.factory.annotation.Qual... import org.springframework.stereotype.Repository @AnnotateWith(annotations = [ Annotation(target = AnnotationTarget.CLASS, type = R... Annotation(target = AnnotationTarget.CONSTRUCTOR, ty... Annotation(target = AnnotationTarget.CONSTRUCTOR_PAR... ]) annotation class BetaDbConfigAutowireable ** アノテーションの設定 [#v0af7e0c] @ConfigAutowireable の代わりに @BetaDbConfigAutowireable ... @Dao @BetaDbConfigAutowireable public interface *Dao { ... } * ちなみに [#sb59e90b] Doma-GenなどのGradleタスクを別名で作るのがいい。 ページ名: