Chapter 1. Why Spring Dynamic Modules?
The Spring Framework is the leading full-stack Java/JEE application framework. It provides a lightweight
container and a non-invasive programming model enabled by the use of dependency injection, AOP, and
portable service abstractions. The OSGi Service Platform offers a dynamic application execution environment
in which modules (bundles) can be installed, updated, or removed on the fly. It also has excellent support for
modularity and versioning.
Spring Dynamic Modules makes it easy to write Spring applications that can be deployed in an OSGi execution
environment, and that can take advantage of the services offered by the OSGi framework. Spring's OSGi
support also makes development of OSGi applications simpler and more productive by building on the
ease-of-use and power of the Spring Framework. For enterprise applications, the combination of Spring
Dynamic Modules and the OSGi platform provides:
• Better separation of application logic into modules, with runtime enforcement of module boundaries
• The ability to deploy multiple versions of a module (or library) concurrently
• The ability to dynamically discover and use services provided by other modules in the system
• The ability to dynamically install, update and uninstall modules in a running system
• Use of the Spring Framework to instantiate, configure, assemble, and decorate components within and across
modules.
• A simple and familiar programming model for enterprise developers to exploit the features of the OSGi
platform.
We believe that the combination of OSGi and Spring offers a comprehensive model for building enterprise
applications.
The OSGi Alliance found valuable the programming model proposed by Spring DM and, in OSGi 4.2,
standardized it by introducing the Blueprint Container, as part of the Compendium services.