Spring和resteasy集成三种方式
对于和jboss as7的集成不需要做任何工作,jboss默认集成了resteasy,只需要对业务pojo做一些jax-rs的注解标注即可。对于非Jboss的Servlet容器Spring和resteasy集成,主要有三种方式,运行于Servlet版本大于等于3.0运行于Servlet版本小于3.0将resteasy和spring mvc整合在一起基
对于和jboss as7的集成不需要做任何工作,jboss默认集成了resteasy,只需要对业务pojo做一些jax-rs的注解标注即可。
对于非Jboss的Servlet容器
Spring和resteasy集成,主要有三种方式,
-
运行于Servlet版本大于等于3.0
-
运行于Servlet版本小于3.0
-
将resteasy和spring mvc整合在一起
基本配置
构建POM 依赖
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>jaxrs-api</artifactId>
<version>${project.dependency.jboss.resteasy}</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>${project.dependency.jboss.resteasy}</version>
</dependency>
<!-- Resteasy 集成 Jackson2 工具包 方便JSON 转换。 -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>${project.dependency.jboss.resteasy}</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>${project.dependency.jboss.resteasy}</version>
</dependency>
<!-- Reasteasy 集成Spring g工具包-->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-spring</artifactId>
<version>${project.dependency.jboss.resteasy}</version>
</dependency>
Web.xml 配置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-config.xml</param-value>
</context-param>
运行于Servlet版本大于等于3.0
servlet 3支持的初始化器
如果servlet版本大于3.0,那么需要加入一个servlet的初始化器
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-servlet-initializer</artifactId>
<version>${project.dependency.jboss.resteasy}</version>
</dependency>
web.xml文件的配置
添加2个监听器,要注意的是,原本Spring默认使用的Context Loader Listener, 就不用使用了,因为第二个监听器 已经完成了加载Spring的工作了。
<!-- Start Resteasy -->
<listener>
<listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
<!-- load Spring Context -->
<listener>
<listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>
</listener>
编写Pojo类
@Path("/restUser")
@Named
public class RestUserService {
@Inject
private UserService userServiceImpl;
@GET
@Path("/list")
@Produces(value = {MediaType.APPLICATION_JSON})
public String list() {
User user = userServiceImpl.get(4L);
return JacksonUtils.get().toJson(user);
}
}
启动服务器,访问 http://ip:port/你的项目路径/restUser/list。即可得到相应的json数据啦
运行于Servlet版本小于3.0
当运行的容器Servlet的版本小于3.0 那么之前的Serlvet3的初始化器是不能正常工作的,需要去掉。
web.xml文件的配置
要指定前缀否则和spring mvc的url-pattern冲突
<servlet>
<servlet-name>resteasy</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rs</param-value>
</context-param>
</servlet>
<servlet-mapping>
<servlet-name>resteasy</servlet-name>
<url-pattern>/rs/*</url-pattern>
</servlet-mapping>
启动服务器,访问 http://ip:port/你的项目路径/restUser/list。即可得到相应的json数据啦
整合SpringMVC
整合到SpringMVC 是不需要Serlvet 初始化器的。
Web.xml文件配置
整合到SpringMVC中去,只需要使用SpringMVC的Servlet即可。
<servlet>
<servlet-name>Spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet;</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Spring</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
编写Pojo类
使用SpringMVC的Controller的类注解,就可以整合到SpringMVC中去啦!
@Controller
@Path(ContactsResource.CONTACTS_URL)
public class ContactsResource
{
public static final String CONTACTS_URL = "/contacts";
@Autowired
ContactService service;
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("data")
public Contacts getAll()
{
return service.getAll();
}
@PUT
@POST
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("data")
public Response saveContact(@Context UriInfo uri, Contact contact)
throws URISyntaxException
{
service.save(contact);
URI newURI = UriBuilder.fromUri(uri.getPath()).path(contact.getLastName()).build();
return Response.created(newURI).build();
}
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("data/{lastName}")
public Contact get(@PathParam("lastName") String lastName)
{
return service.getContact(lastName);
}
@POST
@PUT
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_HTML)
public ModelAndView saveContactForm(@Form Contact contact)
throws URISyntaxException
{
service.save(contact);
return viewAll();
}
@GET
@Produces(MediaType.TEXT_HTML)
public ModelAndView viewAll()
{
// forward to the "contacts" view, with a request attribute named
// "contacts" that has all of the existing contacts
return new ModelAndView("contacts", "contacts", service.getAll());
}
}
更多推荐
所有评论(0)