Spring Boot 和 Jersey 的简单应用
Spring Boot 是 Spring 应用程序的引导框架。它还与泽西岛的整合提供无缝支持。其中一个优点(从 Jersey 用户的角度来看)是你可以访问 Spring 庞大的生态系统。
首先,创建一个新的独立 (非 wepapp)Maven 项目。我们也可以创建一个 webapp,但是对于本指南,我们将只使用一个独立的应用程序。创建项目后,将以下内容添加到 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>
我们只需要两个依赖项。一个用于 Jersey Spring Boot 模块,另一个用于嵌入式 Tomcat 服务器。我们将使用该插件运行应用程序进行测试。
完成后,将以下类添加到项目中。
com/example
|
+-- GreetingApplication.class
+-- JerseyConfig.class
|
+ com/example/services
| |
| +-- GreetingService.class
| +-- NiceGreetingService.class
|
+ com/examples/resources
|
+-- GreetingResource.class
GreetingApplication.class
这是 bootstrap 类(非常简单)
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
这是 Jersey 配置类
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
和 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
这是我们将 Spring 注入 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);
}
}
就是这样。我们现在可以运行该应用程序。获取终端并从项目的根目录运行以下命令。
mvn spring-boot:run
应用程序应该花几秒钟才能开始。会有一些日志记录,你会看到一些 Spring ASCII 艺术。在那个艺术之后,它应该是大约 30 行左右的更多日志记录,那么你应该看到
15.784 seconds (JVM running for 38.056)
现在应用程序已启动。如果你使用 cURL,你可以使用它进行测试
curl -v 'http://localhost:8080/api/greeting?name=peeskillet'
如果你使用的是 Windows,请在 URL 周围使用双引号。如果你不使用 cURL,只需在浏览器中输入即可。你应该看到结果
Hello peeskillet!
你可能会注意到第一次请求时请求需要几秒钟。这是因为应用程序启动时 Jersey 没有完全加载。我们可以通过在 src/main/resources
文件夹中添加 application.properties
文件来改变它。在该文件中添加以下内容:
spring.jersey.servlet.load-on-startup=1