Die Bibliothek Spring in Java
Spring ist eine Bibliothek, die Bestandteile für verschiedene Gebiete enthält, aber sie ist bekannt für ihre Unterstützung von Implementationseingaben (dependency injection ).
Implementationseingabe
In dem folgenden Programm ist das Ziel der Ausgabe (»System.out«) und der Text der Nachricht (»"Hallo, Welt"«) fest verdrahtet.
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( "Hallo, Welt" ); }}
In dem folgenden Programm ist das Ziel der Ausgabe (»System.out«) und der Text der Nachricht (»"Hallo, Welt"«) mehr entkoppelt.
Main.java
interface TextSource
{ public java.lang.String getText(); }interface Printer
{ public void setTextSource( final TextSource textSource );
public TextSource getTextSource();
public void print(); }class OutPrinter implements Printer
{ private TextSource textSource;
public void setTextSource( final TextSource textSource ){ this.textSource = textSource; }
public TextSource getTextSource(){ return this.textSource; }
public void print(){ java.lang.System.out.print( this.textSource.getText() ); }}class HelloWorldTextSource implements TextSource
{ public java.lang.String getText(){ return "Hello, World"; }}public final class Main
{ public static void main( final java.lang.String[] args )
{ final Printer printer = new OutPrinter();
final TextSource source = new HelloWorldTextSource();
printer.setTextSource( source );
printer.print(); }}
Eine Hilfsklasse stellt Fabrikationsmethoden bereit, die es erlauben, den Typ des Objektes durch ein Argument zu bestimmen und damit flexibler sind.
Main.java
interface TextSource
{ public java.lang.String getText(); }interface Printer
{ public void setTextSource( final TextSource textSource );
public TextSource getTextSource();
public void print(); }class OutPrinter implements Printer
{ private TextSource textSource;
public void setTextSource( final TextSource textSource ){ OutPrinter.this.textSource = textSource; }
public TextSource getTextSource(){ return OutPrinter.this.textSource; }
public void print(){ java.lang.System.out.print( OutPrinter.this.textSource.getText() ); }}class HelloWorldTextSource implements TextSource
{ public java.lang.String getText(){ return "Hello, World"; }}class Support
{ private static final Support support = new Support();
public static Support getInstance(){ return Support.support; }
public Printer getPrinter(){ return new OutPrinter(); }
public TextSource getTextSource(){ return new HelloWorldTextSource(); }}public final class Main
{ public static void main( final java.lang.String[] args )
{ final Printer printer = Support.getInstance().getPrinter();
final TextSource source = Support.getInstance().getTextSource();
printer.setTextSource( source );
printer.print();}}
Spring
Spring erlaubt es, die Verdrahtung von Objekten in einer Konfigurationsdatei festzulegen. Damit kann sie beispielsweise auch noch zur Laufzeit angepaßt werden, was noch flexibler ist.
(Der folgende Quelltext wurde nicht getestet.)
- Main.java
public final class Main
{private static org.springframework.beans.factory.BeanFactory getBeanFactory() throws Exception
{ XmlBeanFactory factory = new org.springframework.beans.factory.xml.XmlBeanFactory(new FileSystemResource(“msgConf.xml”));
return factory; }public static void main( final java.lang.String[] args )
{ org.springframework.beans.factory.BeanFactory factory = Main.getBeanFactory();
final Printer printer =( Printer )factory.getBean( “printer” );
printer.print(); }}msgConf.xml
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="printer” class=“Printer">
<property name="textSource"><ref local="source"/></property>
</bean>
<bean id="source” class="HelloWorldMessageProvider"/>
</bean>
</beans>
Zur Installation von Spring müssen die Bibliotheken aus einem Zip -Ordner entpackt und dann noch die Abhängigkeiten installiert werden.