216 lines
5.8 KiB
XML
216 lines
5.8 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
|
|
<book xmlns:xi="http://www.w3.org/2001/XInclude">
|
|
<bookinfo>
|
|
<title>Spring Plugin</title>
|
|
|
|
<subtitle>The smallest plugin system ever</subtitle>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Oliver</firstname>
|
|
|
|
<surname>Gierke</surname>
|
|
|
|
<affiliation>
|
|
<jobtitle>Senior Member Technical Staff</jobtitle>
|
|
|
|
<orgname>SpringSource, a division of VMware</orgname>
|
|
</affiliation>
|
|
|
|
<email>ogierke (at) vmware.com</email>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<releaseinfo>V0.8</releaseinfo>
|
|
|
|
<pubdate>23.09.2009</pubdate>
|
|
|
|
<copyright>
|
|
<year>2008-2012</year>
|
|
|
|
<holder>The original authors</holder>
|
|
</copyright>
|
|
|
|
<revhistory>
|
|
<revision>
|
|
<date>04.11.2008</date>
|
|
|
|
<author>
|
|
<firstname>Oliver</firstname>
|
|
|
|
<surname>Gierke</surname>
|
|
</author>
|
|
|
|
<revremark>Initial draft</revremark>
|
|
</revision>
|
|
|
|
<revision>
|
|
<date>05.11.2008</date>
|
|
|
|
<author>
|
|
<firstname>Oliver</firstname>
|
|
|
|
<surname>Gierke</surname>
|
|
</author>
|
|
|
|
<revremark>Added metadata module documentation</revremark>
|
|
</revision>
|
|
|
|
<revision>
|
|
<date>24.01.2009</date>
|
|
|
|
<author>
|
|
<firstname>Oliver</firstname>
|
|
|
|
<surname>Gierke</surname>
|
|
</author>
|
|
|
|
<revremark>Added remark to inner bean usage</revremark>
|
|
</revision>
|
|
|
|
<revision>
|
|
<date>23.03.2009</date>
|
|
|
|
<author>
|
|
<firstname>Oliver</firstname>
|
|
|
|
<surname>Gierke</surname>
|
|
</author>
|
|
|
|
<revremark>Added section on plugin ordering</revremark>
|
|
</revision>
|
|
|
|
<revision>
|
|
<date>21.02.2012</date>
|
|
|
|
<author>
|
|
<firstname>Oliver</firstname>
|
|
|
|
<surname>Gierke</surname>
|
|
</author>
|
|
|
|
<revremark>Move project to SpringSource</revremark>
|
|
</revision>
|
|
</revhistory>
|
|
</bookinfo>
|
|
|
|
<preface>
|
|
<title>Preface</title>
|
|
|
|
<section>
|
|
<title>Introduction</title>
|
|
|
|
<para>Building extensible architectures nowadays is a core principle to
|
|
create maintainable applications. This is why fully fledged plugin
|
|
environments like <glossterm><abbrev>OSGi</abbrev></glossterm> are so
|
|
poular these days. Unfortunately the introduction of
|
|
<glossterm><abbrev>OSGi</abbrev></glossterm> introduces a lot of
|
|
complexity to projects.</para>
|
|
|
|
<para>Spring Plugin provides a more pragmatic approach to plugin
|
|
development by providing the core flexibility of having plugin
|
|
implementations extending a core system's functionality but of course
|
|
not delivering core <abbrev>OSGi</abbrev> features like dynamic class
|
|
loading or runtime installation and deployment of plugins. Although
|
|
Spring Plugin thus is not nearly as powerful as <abbrev>OSGi</abbrev>,
|
|
it servers poor man's requirements to build a modular extensible
|
|
application.</para>
|
|
</section>
|
|
|
|
<section id="preface.context">
|
|
<title>Context</title>
|
|
|
|
<para><itemizedlist spacing="compact">
|
|
<listitem>
|
|
<para>You want to build an extensible architecture minimizing
|
|
overhead as much as possible</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>You cannot use OSGi as fully fledged plugin architecture for
|
|
whatever reasons</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>You want to express extensibility by providing dedicated
|
|
plugin interfaces</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>You want to extend the core system by simply providing an
|
|
implementation of the plugin interface bundled in a JAR file and
|
|
available in the classpath.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>(You use Spring in your application)</para>
|
|
</listitem>
|
|
</itemizedlist></para>
|
|
|
|
<para>The last point actually is not essential although Spring Plugin
|
|
gains a lot of momentum in collaborative use with Spring.</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Technologies</title>
|
|
|
|
<simplesect>
|
|
<title>Spring</title>
|
|
|
|
<para>Spring is the defacto standard application framework for Java
|
|
applications. Its consistent programming model, easy configuration and
|
|
wide support for all kinds of third party libraries makes it the first
|
|
class citizen of application frameworks. Spring Plugin tightly
|
|
integrates into Spring's component model and extends the core
|
|
container with some custom functionality.</para>
|
|
</simplesect>
|
|
</section>
|
|
</preface>
|
|
|
|
<xi:include href="../../core/src/doc/core.xml">
|
|
<xi:fallback href="../../core/src/doc/core.xml" />
|
|
</xi:include>
|
|
|
|
<xi:include href="../../metadata/src/doc/metadata.xml">
|
|
<xi:fallback href="../../metadata/src/doc/metadata.xml" />
|
|
</xi:include>
|
|
|
|
<glossary>
|
|
<glossdiv>
|
|
<title>O</title>
|
|
|
|
<glossentry>
|
|
<glossterm>OSGi</glossterm>
|
|
|
|
<glossdef>
|
|
<para>Open Services Gateway Initiative - a fully fledged plugin
|
|
runtime environment on top of the Java VM - <ulink
|
|
url="http://en.wikipedia.org/wiki/OSGi">http://en.wikipedia.org/wiki/OSGi</ulink>.</para>
|
|
</glossdef>
|
|
</glossentry>
|
|
</glossdiv>
|
|
|
|
<glossdiv>
|
|
<title>X</title>
|
|
|
|
<glossentry>
|
|
<glossterm>XML</glossterm>
|
|
|
|
<glossdef>
|
|
<para>eXtensible Markup Language</para>
|
|
</glossdef>
|
|
</glossentry>
|
|
|
|
<glossentry>
|
|
<glossterm>XSD</glossterm>
|
|
|
|
<glossdef>
|
|
<para>Xml Schema Definition</para>
|
|
</glossdef>
|
|
</glossentry>
|
|
</glossdiv>
|
|
</glossary>
|
|
</book>
|