Skip to content

pepite/Play--framework-Spring-module

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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>

You can also define a separate application context which will be used for running the tests by prefixing the filename with the Play! id, ie. test.application-context.xml. This works also works for dev and prod.

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.

Manual PropertyPlaceholderConfigurer configuration

By default, a org.springframework.beans.factory.config.PropertyPlaceholderConfigurer containing the properties of application.conf is added to the Spring context. In some cases, this may not be desirable as it can conflict with a PropertyPlaceholderConfigurer that you have defined in your application-context.xml. To disable the automatic PropertyPlaceholderConfigurer placement into the context, update application.conf with

play.spring.add-play-properties=false

and then add your own definition to application-context.xml.

If you want to have your own properties and those of your Play! application handled by a PropertyPlaceholderConfigurer, you can add all of them in application-context.xml:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:jdbc.properties</value>
            <value>classpath:application.conf</value>
        </list>
    </property>
</bean>

Namespaces

If you want the Spring configuration loader to be namespace aware, you need to explicitly state this in the configuration using

play.spring.namespace-aware=true

Spring profiles

If you want to configure Spring profile(s), add the following to the conf/application.conf

play.spring.profiles=DEV 

About

A module to interface Spring and the Play! framework

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages