Documentation / Setup / Spring
Spring boot
Ebean is now aware of Spring boot runnable jar structure (for scanning the classpath). There is an example application showing:
- Factory Bean (programmatic configuration of EbeanServer)
- The EbeanFactoryBean also loads and uses configuration Properties from application.properties
- test-ebean.properties
This example does not show integration with Spring transactions (and instead uses Ebean's own transactions). Please
review the ebean-spring
project for that.
ebean-spring
The ebean-spring provides a FactoryBean as well as integration with Spring transactions.
<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
is a spring FactoryBean that also holds a serverConfig.
It is expected to be used in conjunction with default-ebean-server.xml
which specifically
registers SpringAwareJdbcTransactionManager
as the external transaction manager on the ServerConfig.
SpringAwareJdbcTransactionManager
SpringAwareJdbcTransactionManager
implements Ebean's ExternalTransactionManager API and provides the
integration into Spring transaction management.
SpringJdbcTransaction
SpringJdbcTransaction
extends Ebean's ExternalJdbcTransaction
and
is used by SpringAwareJdbcTransactionManager.
FactoryBean
Rather than use the implementation provided in ebean-spring
you can write your
own Spring FactoryBean like the code below (or the spring boot EbeanFactoryBean example
Factory Bean (programmatic configuration of 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);
}
}