Spring 启动

Ebean 现在了解 Spring 启动可运行 jar 结构(用于扫描类路径)。有一个 示例应用程序 显示

此示例不显示与 Spring 事务的集成(而是使用 Ebean 自身的事务)。请查看 ebean-spring 项目以了解该内容。

ebean-spring

ebean-spring 提供了一个 FactoryBean,以及与 Spring 事务的集成。

<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 是一个 Spring FactoryBean,它还包含一个 serverConfig。它与 default-ebean-server.xml 结合使用,后者专门在 ServerConfig 上将 SpringAwareJdbcTransactionManager 注册为外部事务管理器。

SpringAwareJdbcTransactionManager

SpringAwareJdbcTransactionManager 实现 Ebean 的 ExternalTransactionManager API,并提供与 Spring 事务管理的集成。

SpringJdbcTransaction

SpringJdbcTransaction 扩展 Ebean 的 ExternalJdbcTransaction,并由 SpringAwareJdbcTransactionManager 使用。

FactoryBean

与其使用 ebean-spring 中提供的实现,您可以编写自己的 Spring FactoryBean,如下面的代码所示(或 Spring 启动 EbeanFactoryBean 示例 工厂 Bean(EbeanServer 的编程配置))。

/**
 * 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);
  }
}