2015-09-21 10 views
20

Teraz chcę stworzyć wspólną usługę pocztową dla naszych systemów. Podczas projektowania, chcemy rozwijać producenta i konsumenta RabbitMQ. Po stronie konsumenta moglibyśmy opracować i wdrożyć aplikację Spring Boot lub Spring Cloud, ale po stronie producenta chcemy dać wspólnego klienta pocztowego, takiego jak poniższy interfejs, i uzależnić jar od innego systemu.Jak używać wiosennego rozruchu tworząc wspólną bibliotekę

interface MailClient { 
    ListentableFuture send(Message message); 
} 

ale widzę bagażnika sprężyna i chmura za pomocą wielu metod deklaratywny i wydaje należy użyć klasy aplikacji, ale chcę tylko odniesienie klasy i nie trzeba wdrożyć. nie wiem, jak to wdrożyć.

Odpowiedz

1

Według documentation:

Wiosna Boot ułatwia tworzenie stand-alone,produkcja klasy Wiosna oparty Aplikacje, że można "wystarczy uruchomić".

Ale Spring Boot to nie srebrna kula, która pasuje do wszystkich sytuacji. Jeśli chcesz utworzyć bibliotekę, możesz utworzyć zwykły projekt wiosenny, który zbuduje słoik i zapisze go w repozytorium Twojej firmy, jeśli je posiadasz.

+3

Odpowiedź Sanjay poniżej jest poprawną odpowiedzią. Wiosenna dokumentacja IO dokładnie omawia tę kwestię i pokazuje prawidłowy sposób wdrożenia biblioteki na potrzeby wiosennych aplikacji rozruchowych: https://spring.io/guides/gs/multi-module/. Ponieważ dokumentacja stwierdza: ** Chociaż wtyczka Spring Boot Maven nie jest używana, chcesz skorzystać z zarządzania zależnościami rozruchu sprężynowego ** –

32

Spring Lemon byłby dobrym tego przykładem. Używa Spring Boot i ma być zawarty w innych aplikacjach Spring Boot. To, co zrobiliśmy, aby go utworzyć:

  1. Utworzono aplikację Wiosna Boot, używając Wiosna Boot Starter Kreatora z STS.
  2. Usunięto wygenerowaną aplikację i klasę testową.
  3. Usunięto spring-boot-maven-plugin, tj produkcji i pluginRepositories sekcji w pom.xml. (Zobacz, jak wygląda pom.xml bez tych sekcji).
+8

To jest poprawna odpowiedź. –

+1

@sanjay A gdzie używasz Spring Lemon jako zależności, dodaj tę adnotację '@SpringBootApplication (scanBasePackages = {" com.naturalprogrammer.spring "})' do głównej klasy, w której uruchamiasz aplikację. Innymi słowy, jak urozmaicić wszystkie zajęcia w Spring Lemon tak, aby Spring to sobie poradził, jeśli wiesz o co mi chodzi. –

+0

Poprawnie, w https://github.com/naturalprogrammer/lemon-demo Użyłem '@SpringBootApplication (scanBasePackageClasses = {LemonDemoApplication.class, LemonConfig.class})'. (Wydaje mi się, że można również wypróbować AutoConfiguration, ale powyższe działa dobrze) – Sanjay

7

Dokumentacja Wiosna rozwiązuje ten problem dokładnie i pokazuje prawidłowy sposób realizowania wspólnej biblioteki z/Spring buta:

https://spring.io/guides/gs/multi-module/

Jak mówi dokumentacja: chociaż wtyczki Wiosna Boot Maven nie jest używany, chcesz skorzystać z zarządzania zależnością Spring Boot.

0

miałem podobną potrzebę jak ty, do tej pory udało mi się zbudować bibliotekę użytku w innych projektach z następującej konfiguracji:

`

<modelVersion>4.0.0</modelVersion> 
<groupId>mx.grailscoder</groupId> 
<artifactId>library</artifactId> 
<version>1.0-SNAPSHOT</version> 
<name>My Custom Library built on Spring Boot</name> 
<description>Spring Boot Project library</description> 
<packaging>jar</packaging> 

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

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>${spring.version}</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 
<properties> 
    <java.version>1.8</java.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <logentries-appender>RELEASE</logentries-appender> 
</properties> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>repackage</goal> 
        </goals> 
        <configuration> 
         <skip>true</skip> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

`

Ważne jest, aby wspomnieć, I pominąłem zadanie repackage, ponieważ moja biblioteka nie miała żadnej głównej klasy, a następnie wykonanie zadania mvn install nie zawiedzie.

Powiązane problemy