Spring boot

Ebean は、Spring boot の実行可能 jar の構造(クラスパスをスキャンする場合)を認識できるようになりました。サンプルアプリケーションで、次を示しています。

このサンプルでは、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);
  }
}