jersey
Spring Boot gebruiken met Jersey
Zoeken…
Eenvoudige toepassing met Spring Boot en Jersey
Spring Boot is een bootstrapping-framework voor Spring-toepassingen. Het biedt ook naadloze ondersteuning voor integratie met Jersey. Een van de voordelen hiervan (vanuit het perspectief van een Jersey-gebruiker) is dat je toegang hebt tot het enorme ecosysteem van Spring.
Maak om te beginnen een nieuw zelfstandig (niet-wepapp) Maven-project. We kunnen ook een webapp maken, maar voor deze handleiding gebruiken we alleen een zelfstandige app. Nadat u het project hebt gemaakt, voegt u het volgende toe aan uw pom.xml
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
We hebben slechts twee afhankelijkheden nodig. Een voor de Jersey Spring Boot-module en een andere voor een ingesloten Tomcat-server. De plug-in die we zullen gebruiken om de te testen applicatie uit te voeren.
Zodra je dat hebt, voeg je de volgende klassen toe aan het project.
com/example
|
+-- GreetingApplication.class
+-- JerseyConfig.class
|
+ com/example/services
| |
| +-- GreetingService.class
| +-- NiceGreetingService.class
|
+ com/examples/resources
|
+-- GreetingResource.class
GreetingApplication.class
Dit is de bootstrap-klasse (heel eenvoudig)
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class GreetingApplication {
public static void main(String[] args) {
SpringApplication.run(GreetingApplication.class, args);
}
}
JerseyConfig.class
Dit is de Jersey-configuratieklasse
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.stereotype.Component;
@Component
@ApplicationPath("/api")
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
packages("com.example");
}
}
GreetingService.class
en NiceGreetingService.class
public interface GreetingService {
public String getGreeting(String name);
}
import org.springframework.stereotype.Component;
@Component
public class NiceGreetingService implements GreetingService {
@Override
public String getGreeting(String name) {
return "Hello " + name + "!";
}
}
GreetingResource
Dit is de resource-klasse waar we Spring de GreetingService
in laten injecteren.
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import org.springframework.beans.factory.annotation.Autowired;
import com.example.service.GreetingService;
@Path("greeting")
public class GreetingResource {
private GreetingService greetingService;
@Autowired
public GreetingResource(GreetingService greetingService) {
this.greetingService = greetingService;
}
@GET
public String getGreeting(@QueryParam("name") String name) {
return this.greetingService.getGreeting(name);
}
}
En dat is het. We kunnen de applicatie nu uitvoeren. Pak een terminal en voer de volgende opdracht uit vanuit de root van het project.
mvn spring-boot:run
De toepassing moet enkele seconden duren om te beginnen. Er zal wat logboekregistratie zijn en je zult wat Spring ASCII-kunst zien. Na die kunst zou het ongeveer 30 regels of meer moeten zijn om te loggen, dan zou je moeten zien
15.784 seconds (JVM running for 38.056)
Nu is de app gestart. Als u cURL gebruikt, kunt u het testen
curl -v 'http://localhost:8080/api/greeting?name=peeskillet'
Als u Windows gebruikt, gebruikt u dubbele aanhalingstekens rond de URL. Als u cURL niet gebruikt, typt u het gewoon in de browser. Je zou het resultaat moeten zien
Hello peeskillet!
Mogelijk merkt u dat het verzoek enkele seconden duurt bij het eerste verzoek dat u doet. Dat komt omdat Jersey niet volledig is geladen wanneer de app wordt gestart. We kunnen dat wijzigen door een bestand application.properties
voegen aan de map src/main/resources
. Voeg in dat bestand het volgende toe:
spring.jersey.servlet.load-on-startup=1