Spring Boot(16)——DataSourceを使う
8101 ワード
もっと読む
DataSourceを使う
DataSourceを使用するならば、pom.xmlに comp.zaxer.hikari.Hikari Data Source org.apache.tomcat.jdbc.pool.DataSource org.apache.com mmons.dbcp 2.BaicDataSource
次に、設定URL、駆動クラスクラス名、ユーザ名、パスワードなどのような、
使用するHikariDataSource接続池を構成する必要がある場合は、
使用するTomcat接続池を構成する必要がある場合は、
使用するdbcp 2接続プールを構成する必要がある場合は、
DataSourceがあれば、DataSourceが使えます.私たちはその応用が必要なところで直接注入できます.例えば、下のように.
埋め込みデータベースに基づくDataSourceを使用します.
Spring BootはH 2、HSQL、Derbyの3つの埋め込まれたデータベースを自動的に配置することをサポートしています.Class pathの下にそれらの関連するドライバクラスが存在する限り、Spring Bootは自動的に対応するDataSourceを配置します.埋め込みデータベースに基づく自動構成のDataSourceは、ユーザ名やパスワードなどのデータベース接続情報を設定する必要がない.DataSourceがあればDataSourceに関する操作ができます.セルテストを行う時に埋め込まれたデータベースを使うのはいい選択です.
JNDIベースのDataSourceを使う
JNDIベースのDataSourceを使用する必要がある場合は、
DataSourceを使う
DataSourceを使用するならば、pom.xmlに
spring-boot-starter-jdbc
の依存を追加することができ、これは自動的にSpring Jdbcの依存を追加します.また、対応するJDBCドライバの依頼を入れます.ここで使っているのはMySQLのドライバです.<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-jdbcartifactId>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
DataSourceの自動構成はorg.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
によって担当され、DataSourceタイプのbeanが存在しない場合、池化されたDataSourceの作成を担当します.サポートされている接続プールは以下のようなものが含まれていますが、デフォルトでは自動的に使う順番も以下の順序で使います.つまり、Class pathの下にHikariDataSourceがある場合は、HikariDataSourceを優先的に使用します.次はTomcatが提供するデータベース接続池です.最後はdbcp 2です.spring-boot-starter-jdbc
の依存度を追加すると、自動的にカスケードがHikari依存性に追加されます.すなわち、デフォルトではHikariDataSourceが使用されます.Class pathの下に複数のサポートデータベース接続池が同時に存在している場合、自動的に選択されたデータベース接続池を使用することが望まれない場合は、spring.datasource.type
により使用するデータベース接続池を指定することにより実現することができる.たとえば、Class pathの下にcom.zaxxer.hikari.HikariDataSource
とorg.apache.tomcat.jdbc.pool.DataSource
が同時に存在する場合、デフォルトはcom.zaxxer.hikari.HikariDataSource
を使用し、もしorg.apache.tomcat.jdbc.pool.DataSource
を使用することが望ましいならば、spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
を構成することができる.次に、設定URL、駆動クラスクラス名、ユーザ名、パスワードなどのような、
spring.datasource
プレフィクスから開始される属性構成データベース接続に関する情報を接続することができる.データベースの構成情報はorg.springframework.boot.autoconfigure.jdbc.DataSourceProperties
によって受信される.spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=elim
より多くの構成情報は、DataSourcePropertiesのAPI文書を参照することができる.使用するHikariDataSource接続池を構成する必要がある場合は、
spring.datasource.hikari
プレフィックスから開始される属性によって配置することができ、対応する構成属性はcom.zaxxer.hikari.HikariDataSource
によって受信されます.構成可能な属性は、対応するAPI文書を参照してください.使用するTomcat接続池を構成する必要がある場合は、
spring.datasource.tomcat
プレフィックスから開始される属性によって構成することができ、対応する構成属性はorg.apache.tomcat.jdbc.pool.DataSource
によって受信され、構成可能な属性は対応するAPI文書を参照してください.使用するdbcp 2接続プールを構成する必要がある場合は、
spring.datasource.dbcp2
プレフィックスの開始属性によって構成することができ、対応する構成属性はorg.apache.commons.dbcp2.BasicDataSource
によって受信され、構成可能な属性は対応するAPI文書を参照してください.DataSourceがあれば、DataSourceが使えます.私たちはその応用が必要なところで直接注入できます.例えば、下のように.
@Service
public class JdbcService {
@Autowired
private DataSource dataSource;
public List<String> getUsers() throws Exception {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
List<String> names = new ArrayList<>();
try {
connection = this.dataSource.getConnection();
statement = connection.createStatement();
resultSet = statement.executeQuery("select name from tb_user");
while (resultSet.next()) {
names.add(resultSet.getString(1));
}
} finally {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
}
return names;
}
}
現在のアプリケーションではほとんどDataSourceを直接使用しないでプログラムしています.基本的にはHibernate、JPA、またはMybatisに基づいてプログラミングしています.JdbcTemplateを使うこともあります.DataSourceタイプのbeanを持つと、Spring Bootのorg.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration
が自動的にJdbcTemplate beanを配置してくれるので、上記のコードは次のように書き換えられます.@Service
public class JdbcService {
@Autowired
private JdbcTemplate jdbcTemplate;
public List<String> getUsers() throws Exception {
String sql = "select name from tb_user";
List<String> names = this.jdbcTemplate.queryForList(sql, String.class);
return names;
}
}
spring.jdbc.template
プレフィックスの開始属性を使用して、JdbcTemplateをカスタマイズしてもいいです.対応する構成属性はorg.springframework.boot.autoconfigure.jdbc.JdbcProperties.Template
によって受信されます.構成可能な属性は対応するAPI文書を参照してください.埋め込みデータベースに基づくDataSourceを使用します.
Spring BootはH 2、HSQL、Derbyの3つの埋め込まれたデータベースを自動的に配置することをサポートしています.Class pathの下にそれらの関連するドライバクラスが存在する限り、Spring Bootは自動的に対応するDataSourceを配置します.埋め込みデータベースに基づく自動構成のDataSourceは、ユーザ名やパスワードなどのデータベース接続情報を設定する必要がない.DataSourceがあればDataSourceに関する操作ができます.セルテストを行う時に埋め込まれたデータベースを使うのはいい選択です.
JNDIベースのDataSourceを使う
JNDIベースのDataSourceを使用する必要がある場合は、
spring.datasource.jndi-name
属性によりDataSourceに対応するJNDI名称を指定することができる.spring.datasource.jndi-name=java:jboss/datasources/customers
(注:本文はSpring Bootに基づいて2.0.3で書いています)