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
Not implemented yet.
Automatic Component Scanning
Spring 2.5 and later supports auto-wiring and component identification using annotations, obviating the need to define beans explicitly in XML.
To enable component scanning, add this line to the /conf/application.conf file:
play.spring.component-scan=true
Note that enabling this scans for @org.springframework.stereotype.Component, @org.springframework.stereotype.Repository, @org.springframework.stereotype.Service to identify Spring beans. Additionally, running the component scan enables support for annotation based configuration (i.e., @org.springframework.beans.factory.annotation.Autowired, etc).
Limited Scanning
You can limit the classes scanned to specific packages or canonical class names with this line in the /conf/application.conf file:
play.spring.component-scan.base-packages=controllers.beans,services
In this example, only classes whose canonical name start with either 'controllers.beans' or 'services' will be scanned and identified as beans.
Defining your own properties file using the Spring module
Today I added my own properties file to my Spring-powered Play app (Thanks to Oded Peer).
Simply add the following lines to your application-context.xml:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:myapp.properties"/>
<property name="placeholderPrefix"><value>#[</value></property>
<property name="placeholderSuffix"><value>]</value></property>
</bean>
and use it in your beans:
<bean id="a" class="myapp.A">
<property name="str"><value>#[myapp.somekey]</value></property>
</bean>
Now your application can read properties from any properties file you
want.
See this post for more info