Zest™
Introduction
Tutorials
Javadoc
Samples
Core
Libraries
Extensions
Tools
Glossary 

Spring Integration

code

docs

tests

Table 49. Artifact

Group IDArtifact IDVersion

org.apache.zest.library

org.apache.zest.library.spring

0


Using Spring Framework in Apache Zest™

Zest™ supports that Spring Application Context is imported into the Zest™ runtime, and the declared Spring beans will be available as Zest™ services. The most important things to remember are;

  1. Only Spring Singletons are currently supported.
  2. One ApplicationContext per Zest™ Module.
  3. The Zest™ service will be given the same name as the Spring Bean name.
  4. Zest™ Configuration is not reacbable from the Spring bean (kind of obvious).
new SpringImporterAssembler( appContext ).assemble( module );

Using Apache Zest™ in Spring Framework

It is also possible to run a Zest™ Application as a Spring Bean and export its Services to Spring.

Steps to export Zest™ service:

  1. Create spring BeanFactory service of Zest services to export.
  2. Create a class that extends ZestApplicationBootstrap.
  3. Sets the layer and module that register BeanFactory service.
  4. Assemble Zest application by implementing #assemble method.
  5. Sets the identity of bean factory service. This identity is the spring bean name.
  6. Declare Zest bootstrap in spring xml application context.

To bootstrap the Zest™ runtime in Spring, you should have a bootstrap bean that extends the org.apache.zest.library.spring.bootstrap.ZestApplicationBootstrap and implement the org.springframework.context.ApplicationContextAware.

A new bean will appear in the application context, called "zestApplication" which is only intended for internal use of this library.

Example application context;

 <?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:zest="http://zest.apache.org/schema/zest/spring"
  xsi:schemaLocation="
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  http://zest.apache.org/schema/zest/spring http://zest.apache.org/schema/zest/spring/spring-0.5.xsd">

  <!-- class that implements ZestApplicationBootstrap -->

  <zest:bootstrap class="org.hedhman.niclas.MyZestBootstrapper"/>

  <bean id="someService" class="org.hedhman.niclas.SomeService">

  <constructor-arg ref="someService"/> <!-- Reference zest comment service -->

 </bean>
public class MyZestBootstrapper extends ZestApplicationBootstrap
        implements ApplicationContextAware
{
    private ApplicationContext applicationContext;

    @Override
    public void assemble(ApplicationAssembly assembly) throws AssemblyException
    {
        // Normal assembly of an application.
          [...snip...]

    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
    {
        this.applicationContext = applicationContext;
    }

}