2016-03-04 5 views
10

Wie am Namen des Threads orientiert, möchte ich mithilfe von Spring Boot eine JAVA-Bibliothek erstellen. Ich habe diesen Thread gefunden: Creating a library jar using Spring boot. Die Ziele dieses Threads scheinen jedoch durch die Implementierung als REST-API gelöst zu sein.Können wir mithilfe von Spring Boot eine Java-Bibliothek implementieren?

Derzeit entwickle ich eine Spring-basierte JAVA-Bibliothek mit Spring Boot. Und ich habe versucht, als JAR-Datei zu paketieren und eine andere JAVA-Anwendung als JAVA-Bibliothek verwenden zu lassen. Leider habe ich festgestellt, dass Konfigurationen, die innerhalb der Bibliothek definiert sind, überhaupt nicht funktioniert, wenn die aufrufende Anwendung einige Methoden der hinzugefügten Bibliothek aufruft.. Es zeigt auch einen Fehler wie "CommandLineRunner nicht existiert".

Für weitere Informationen wird unten ein Ausschnitt der Datei pom.xml angezeigt. Gemäß der Konfiguration sind keine Abhängigkeiten für Webanwendungen enthalten.

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.3.3.RELEASE</version> 
</parent> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.assertj</groupId> 
     <artifactId>assertj-core</artifactId> 
     <version>2.3.0</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 

Antwort

10

Wenn in der richtigen Art und Weise entwickelt, sollte dies kein Problem sein. Aber im Detail hängt es davon ab, welche Funktionen Sie verwenden. Seit Spring unterstützt externe Bibliothek wie JPA, Websocket, ..

Es gibt zwei wichtige Anmerkungen, um eine Bibliothek zu entwickeln und in einem anderen Projekt zu verwenden.

Die erste ist einfach @Configuration und die andere ist @Import.

Library Project

eine Klasse im Stamm Paket geschnürt, das ungefähr so ​​aussieht.

@Configuration // allows to import this class 
@ComponentScan // Scan for beans and other configuration classes 
public class SomeLibrary { 
    // no main needed here 
} 

Anderes Projekt der Bibliothek

Da in der Regel eine Klasse im Stamm Paket Ihres Projektes setzen verwenden.

@SpringBootApplication 
@Import(SomeLibrary.class) // import the library 
public class OtherApplication { 
    // just put your standard main in this class 
} 

Es ist wichtig zu beachten, dass andere Dinge notwendig sein können, abhängig davon, was Sie in Bezug auf andere Frameworks verwenden. Wenn Sie beispielsweise spring-data verwenden, erweitert die Annotation @EntityScan den Winterschlaf-Scan.

+0

Vielen Dank für Ihre klare Erklärung. Also, nach Ihrem Vorschlag, muss das ** andere Projekt ** auch eine ** Spring-basierte Anwendung ** sein? Wenn möglich, können Sie Ihr Beispiel korrigieren, da diese beiden Klassen denselben Namen haben? – xlives

+0

Korrigiert Entschuldigung war ein Fehler beim Kopieren. Wenn Sie es so machen, ist es notwendig, dass auch die "andere" Anwendung eine Feder-App ist. Es ist möglich, eine Art Self-Contain-Bibliothek zu erstellen, aber das ist in einem Stackoverflow-Post komplizierter und schwer zu erklären. (Ich würde diesen Ansatz vermeiden) –

+0

Danke. Vielleicht frage ich Sie die Lösung über andere Kanäle wie E-Mail später. Angenommen, ich werde sowohl das Bibliotheksprojekt als auch das andere Projekt als Spring-Boot-Anwendungen erstellen. Wie kann ich dann das Bibliotheksglas in das ** andere Projekt ** einfügen? – xlives

Verwandte Themen