Nu wil ik een gemeenschappelijke e-mailservice voor onze systemen ontwikkelen.
Terwijl we ontwerpen, willen we een RabbitMQ
producent en consument ontwikkelen. Aan de kant van de consument zouden we een Spring Boot
– of Spring Cloud
-toepassing kunnen ontwikkelen en implementeren, maar aan de kant van de producent willen we een gemeenschappelijke e-mailclient geven zoals de onderstaande interface en een jar-afhankelijkheid voor een ander systeem.
interface MailClient {
ListentableFuture send(Message message);
}
Maar ik zie spring boot en spring cloud met veel declaratieve methoden en het lijkt erop dat een applicatieklasse moet worden gebruikt, maar ik wil gewoon een klassereferentie en hoef ik niet te implementeren. ik weet niet hoe ik het moet implementeren.
Antwoord 1, autoriteit 100%
Spring Lemonzou hier een goed voorbeeld van zijn. Het maakt gebruik van Spring Boot en is bedoeld om te worden opgenomen in andere Spring Boot-toepassingen. Dit is wat we hebben gedaan om het te maken:
- Een Spring Boot-toepassing gemaakt met behulp van de Spring Boot Starter Wizardvan STS.
- De gegenereerde applicatie en testklasse verwijderd.
- Verwijderd
spring-boot-maven-plugin
, d.w.z. de secties builden pluginRepositoriesin pom.xml. (Zie hoe een pom.xmlzou er zonder deze secties uitzien).
Antwoord 2, autoriteit 72%
De Spring-documentatie pakt dit probleem precies aan en toont de juiste manier om een gemeenschappelijke bibliotheek met/voor Spring boot te implementeren:
https://spring.io/guides/gs/multi-module/
Zoals in de documentatie staat: Hoewel de Spring Boot Maven-plug-in niet wordt gebruikt, wilt u toch profiteren van Spring Boot-afhankelijkheidsbeheer.
Antwoord 3, autoriteit 5%
Ik had een vergelijkbare behoefte als de jouwe, tot nu toe heb ik een bibliotheek kunnen bouwen die bruikbaar is voor andere projecten met de volgende configuratie:
`
<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>
`
Het is belangrijk om te vermelden dat ik de taak repackage
heb overgeslagen omdat mijn bibliotheek geen hoofdklasse had, en het uitvoeren van de taak mvn install
mislukt niet.
>
Antwoord 4
Volgens de documentatie:
Spring Boot maakt het gemakkelijk om stand-aloneproductiekwaliteitte maken
Op lente gebaseerde Applicatiesdie u “gewoon kunt uitvoeren”.
Maar Spring Boot is niet het wondermiddel dat in alle situaties past. Als je een bibliotheek wilt maken, kun je een normaal lenteproject maken waarin een pot wordt gebouwd en deze wordt opgeslagen in de repository van je bedrijf, als je die hebt.