前言
在数字化转型的浪潮中,高效、灵活且可扩展的 API 设计已成为软件系统的核心需求。RESTful 架构风格凭借其简洁性、无状态性和资源导向的特性,成为现代 Web 服务开发的事实标准。而作为 JAX-RS 的参考实现,Jersey 框架为 Java 开发者提供了一套强大且易用的工具,帮助快速构建高性能的 RESTful 服务。
一、jersey是什么
Jersey 是一个开源的 Java RESTful Web 服务框架,基于 JAX-RS(Java API for RESTful Web Services) 规范实现,由 Eclipse 基金会维护。它简化了 RESTful API 的开发,提供了注解、依赖注入(DI)、客户端 API 等特性,支持 JSON、XML 等多种数据格式,并能轻松集成 Spring、Hibernate 等主流框架。
二、区别汇总
1.servlet容器
web.xml加载jersey的servlet容器
jersey1.X | jersey2.X | |
---|---|---|
servlet容器 | com.sun.jersey.spi.Container.servlet.ServletContainer | org.glassfish.jersey.servlet.ServletContainer |
2.扫描resource
jersey1.X | jersey2.X | |
---|---|---|
resource | com.sun.jersey.config.property.packages | jersey.config.server.provider.packages |
3. 支持@WebServlet
jersey2.X可以使用servlet3的 @WebServlet扫描jersey resource。不需要特别配置web.xml
例如:
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import org.glassfish.jersey.servlet.ServletContainer;
@WebServlet(initParams = @WebInitParam(name = "jersey.config.server.provider.packages", value = "com.example"), urlPatterns = "/webapi/*", loadOnStartup = 1)
public class AirServlet extends ServletContainer {
private static final long serialVersionUID = 1L;
}
4.@ApplicationPath注解
jersey2.X可以使用@ApplicationPath注解,加载jersey resouce。
例如:
@ApplicationPath("/webapi/*")
public class AirApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
final Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(MyResource.class);
return classes;
}
}
5.Application加载
jersey2.X可以使用web.xml加载Application
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.example.RestApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
总结
Jersey 作为 JAX-RS 的标杆实现,通过标准化注解和模块化设计,显著降低了 RESTful API 的开发复杂度。它不仅简化了资源定义、请求映射和响应处理,还通过过滤器、依赖注入等机制支持企业级需求。无论是构建轻量级微服务还是复杂业务系统,Jersey 都能提供可靠的技术支撑。