ドキュメンテーション / 設定 / Spring
Spring boot
Ebean は、Spring boot の実行可能 jar の構造(クラスパスをスキャンする場合)を認識できるようになりました。サンプルアプリケーションで、次を示しています。
- ファクトリ Bean(EbeanServer のプログラムによる設定)
- EbeanFactoryBean は application.properties から設定プロパティを読み込み、使用します。
- test-ebean.properties
このサンプルでは、Spring トランザクションとの統合は示されません(代わりに Ebean 独自のトランザクションを使用します)。これについては、ebean-spring プロジェクトを参照してください。
ebean-spring
ebean-spring は、Spring トランザクションとの統合だけでなく、FactoryBean も提供します。
<dependency>
<groupId>${groupid}</groupId>
<artifactId>${artifactid}</artifactId>
<version>${version_str}</version>
</dependency>
<dependency org="${groupid}" name="${artifactid}" rev="${version_str}"/>
@Grapes(
@Grab(group='${groupid}', module='${artifactid}', version='${version_str}')
)
'${groupid}:${artifactid}:${version_str}'
'${groupid}:${artifactid}:${version_str}'
libraryDependencies += "${groupid}" % "${artifactid}" % "${version_str}"
[${groupid}/${artifactid} "${version_str}"]
EbeanServerFactoryBean
EbeanServerFactoryBean は、serverConfig も持つスプリング FactoryBean です。default-ebean-server.xml と併用して使用することが想定されており、この XML では特に SpringAwareJdbcTransactionManager が ServerConfig の外部トランザクションマネージャーとして登録されます。
SpringAwareJdbcTransactionManager
SpringAwareJdbcTransactionManager は Ebean の ExternalTransactionManager API を実装し、Spring トランザクション管理との統合を提供します。
SpringJdbcTransaction
SpringJdbcTransaction は Ebean の ExternalJdbcTransaction を拡張し、SpringAwareJdbcTransactionManager によって使用されます。
FactoryBean
ebean-spring で提供される実装を使用するのではなく、次のようなコード(または、Spring boot EbeanFactoryBean のサンプル ファクトリ Bean(EbeanServer のプログラムによる設定))のように、独自の Spring FactoryBean を作成できます。
/**
* Simple Spring bean factory for creating the EbeanServer.
*/
public class MyEbeanServerFactory implements FactoryBean<EbeanServer> {
public EbeanServer getObject() throws Exception {
return createEbeanServer();
}
public Class<?> getObjectType() {
return EbeanServer.class;
}
public boolean isSingleton() {
return true;
}
/**
* Create a EbeanServer instance.
*/
private EbeanServer createEbeanServer() {
ServerConfig config = new ServerConfig();
config.setName("pg");
// load configuration from ebean.properties
config.loadFromProperties();
config.setDefaultServer(true);
...
// other programmatic configuration
return EbeanServerFactory.create(config);
}
}