blob: ccd050cf7b557c5b3008c5c44ae0b0d2860f52ae [file] [log] [blame]
///////////////////////////////////////////////////////////////
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
///////////////////////////////////////////////////////////////
[[library-spring, Spring Integration Library]]
= Spring Integration =
[devstatus]
--------------
source=libraries/spring/dev-status.xml
--------------
include::../../build/docs/buildinfo/artifact.txt[]
== Using Spring Framework in Apache Polygene™ ==
Polygene™ supports that Spring Application Context is imported into the Polygene™ runtime, and the declared Spring
beans will be available as Polygene™ services. The most important things to remember are;
1. Only Spring Singletons are currently supported.
2. One ApplicationContext per Polygene™ Module.
3. The Polygene™ service will be given the same name as the Spring Bean name.
4. Polygene™ Configuration is not reacbable from the Spring bean (kind of obvious).
[snippet,java]
----
source=libraries/spring/src/test/java/org/apache/polygene/library/spring/importer/PolygeneImportServiceTest.java
tag=import
----
== Using Apache Polygene™ in Spring Framework ==
It is also possible to run a Polygene™ Application as a Spring Bean and export its Services to Spring.
Steps to export Polygene™ service:
1. Create spring BeanFactory service of Polygene services to export.
2. Create a class that extends PolygeneApplicationBootstrap.
3. Sets the layer and module that register BeanFactory service.
4. Assemble Polygene application by implementing #assemble method.
5. Sets the identity of bean factory service. This identity is the spring bean name.
6. Declare Polygene bootstrap in spring xml application context.
To bootstrap the Polygene™ runtime in Spring, you should have a bootstrap bean that extends the
+org.apache.polygene.library.spring.bootstrap.PolygeneApplicationBootstrap+ and implement the
+org.springframework.context.ApplicationContextAware+.
A new bean will appear in the application context, called +"polygeneApplication"+ which is only
intended for internal use of this library.
Example application context;
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:polygene="http://polygene.apache.org/schema/polygene/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://polygene.apache.org/schema/polygene/spring http://polygene.apache.org/schema/polygene/spring/spring-0.5.xsd">
<!-- class that implements PolygeneApplicationBootstrap -->
<polygene:bootstrap class="org.hedhman.niclas.MyPolygeneBootstrapper"/>
<bean id="someService" class="org.hedhman.niclas.SomeService">
<constructor-arg ref="someService"/> <!-- Reference polygene comment service -->
</bean>
----
[snippet,java]
----
source=libraries/spring/src/test/java/org/apache/polygene/library/spring/MyPolygeneBootstrapper.java
tag=code
----