jersey
Använda Spring Boot med Jersey
Sök…
Enkel applikation med Spring Boot och Jersey
Spring Boot är ett bootstrapping-ramverk för Spring-applikationer. Det har sömlöst stöd för att integrera med Jersey också. En av fördelarna med detta (ur en Jersey-användares perspektiv) är att du har tillgång till vårens enorma ekosystem.
För att komma igång, skapa ett nytt fristående (icke-wepapp) Maven-projekt. Vi kan skapa en webapp också, men för den här guiden använder vi bara en fristående app. När du har skapat projektet lägger du till följande i din 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>
Vi behöver bara två beroenden. En för Jersey Spring Boot-modulen och en för en inbäddad Tomcat-server. Plugin som vi kommer att använda för att köra applikationen för att testa.
När du har gjort det lägger du till följande klasser i projektet.
com/example
|
+-- GreetingApplication.class
+-- JerseyConfig.class
|
+ com/example/services
| |
| +-- GreetingService.class
| +-- NiceGreetingService.class
|
+ com/examples/resources
|
+-- GreetingResource.class
GreetingApplication.class
Detta är bootstrap-klassen (mycket enkel)
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
Detta är Jersey-konfigurationsklassen
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
och 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
Det här är resursklassen där vi låter Spring injicera GreetingService
.
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);
}
}
Och det är allt. Vi kan nu köra applikationen. Ta en terminal och kör följande kommando från roten till projektet.
mvn spring-boot:run
Det bör ta några sekunder innan applikationen kommer igång. Det kommer att finnas en del loggning, och du kommer att se vår ASCII-konst. Efter den konsten bör det vara ungefär 30 rader eller mer av loggning, då borde du se
15.784 seconds (JVM running for 38.056)
Nu är appen startad. Om du använder CURL kan du testa det med
curl -v 'http://localhost:8080/api/greeting?name=peeskillet'
Om du är på Windows, använd dubbla citat runt URL: n. Om du inte använder cURL skriver du bara det i webbläsaren. Du borde se resultatet
Hello peeskillet!
Du kanske märker att begäran tar några sekunder på den första begäran du gör. Det beror på att Jersey inte är fulladdat när appen startas. Vi kan ändra det genom att lägga till en application.properties
fil i mappen src/main/resources
. Lägg till följande i den filen:
spring.jersey.servlet.load-on-startup=1