You are viewing the documentation for Play 1. The documentation for Play 2 is here.
Spring module
The spring support module help you to integrate Spring managed beans with a play application.
Enable the Spring module for the application
In the /conf/application.conf file, enable the Spring module by adding this line:
# The spring module
module.spring=${play.path}/modules/spring
Define an application-context.xml registry
In the conf/ directory of the application you can then create a application-context.xml file and define some beans.
For example:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springsource.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="test" class="utils.Test" />
</beans>
Retrieve beans from application code
You can obtain bean instances from the application code, using the play.modules.spring.Spring helper.
public Application extends Controller {
public static void index() {
Test test = Spring.getBeanOfType(Test.class);
...
}
}
@javax.inject.Inject support
You can now use the @Inject annotation to automatically inject defined beans in your controllers, jobs and mailer.
It works on static fields defined in these artefact. For example to inject a PriceWatcher service defined in Spring to one of your controller, just do:
public class Application extends Controller {
@Inject
static PriceWatcher prices;
public static void index() {
prices.getAll(); // prices is defined here
}
}
Auto-reload should work as exepected.