# 用Jersey构建RESTful服务7--Jersey+SQLServer+Hibernate4.3+Spring3.2 ## 一、总体说明 本例运行演示了用 Jersey 构建 RESTful 服务中,如何集成 Spring3 ## 二、环境 1. 上文的项目RestDemo 2. Spring及其他相关的jar ,导入项目 ![Spring及其他相关的jar](https://box.kancloud.cn/2016-05-11_57332e79b3b90.jpg) ## 三、配置 1. 根目录下下创建 Spring 的配置文件`applicationContext.xml`; 配置如下: &lt;?xml version="1.0" encoding="UTF-8"?&gt; ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" > <!-- 激活那些已经在g容器里注册过的bean --> <context:annotation-config></context:annotation-config> <!-- 在容器中注入bean --> <bean id="UserServiceImpl" class="com.waylau.rest.service.impl.UserServiceImpl"/> <bean id="UserDaoImpl" class="com.waylau.rest.dao.impl.UserDaoImpl"/> </beans> ``` 2. 在`com.waylau.rest.service`和`com.waylau.rest.service.impl`下分别增加 UserService 和 UserServiceImpl。 `UserService.java` ``` package com.waylau.rest.service; import java.util.List; import com.waylau.rest.bean.User; /** * User Service 接口 * @author waylau.com * 2014-7-25 */ public interface UserService { public User getUserById(String id); public boolean deleteUserById(String id); public boolean createUser(User user); public boolean updateUser(User user); public List<User> getAllUsers(); } ``` `UserServiceImpl.java` ``` package com.waylau.rest.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import com.waylau.rest.bean.User; import com.waylau.rest.dao.impl.UserDaoImpl; import com.waylau.rest.service.UserService; /** * User Service 接口实现 * @author waylau.com * 2014-7-25 */ public class UserServiceImpl implements UserService { @Autowired private UserDaoImpl userDaoImpl; public UserServiceImpl() { // TODO Auto-generated constructor stub } @Override public User getUserById(String id) { return userDaoImpl.getUserById(id); } @Override public boolean deleteUserById(String id) { return userDaoImpl.deleteUserById(id); } @Override public boolean createUser(User user) { return userDaoImpl.createUser(user); } @Override public boolean updateUser(User user) { return userDaoImpl.updateUser(user); } @Override public List<User> getAllUsers() { return userDaoImpl.getAllUsers(); } } ``` 3. 修改 `UserResource.java` ``` package com.waylau.rest.resources; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.Consumes; import javax.ws.rs.PathParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; import org.springframework.beans.factory.annotation.Autowired; import com.waylau.rest.bean.User; import com.waylau.rest.service.impl.UserServiceImpl; /** * 用户资源 * @author waylau.com * 2014-7-26 */ @Path("/users") public class UserResource { private static final Logger LOGGER = Logger.getLogger(UserResource.class.getName()); @Autowired private UserServiceImpl userServiceImpl; public UserResource() { LOGGER.fine("UserResource()"); } /** * 增加 * @param user */ @POST @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public void createUser(User user) { userServiceImpl.createUser(user); } /** * 删除 * @param id */ @DELETE @Path("{id}") public void deleteUser(@PathParam("id")String id){ userServiceImpl.deleteUserById(id); } /** * 修改 * @param user */ @PUT @Consumes(MediaType.APPLICATION_XML) public void updateUser(User user){ userServiceImpl.updateUser(user); } /** * 根据id查询 * @param id * @return */ @GET @Path("{id}") @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public User getUserById(@PathParam("id") String id){ User u = userServiceImpl.getUserById(id); return u; } /** * 查询所有 * @return */ @GET @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public List<User> getAllUsers(){ List<User> users = new ArrayList<User>(); users = userServiceImpl.getAllUsers(); return users; } } ``` 4. 修改web.xml,插入 ``` <module-name>RestDemo</module-name> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> ``` ## 四、运行 1. 先运行项目 2. 运行UserClient.java测试,控制台输出如下 ``` ****增加用户addUser**** ****查询所有getAllUsers**** [{"userId":"002","userName":"sdfs","age":"23"},{"userId":"003","userName":"sdfs","age":"23"},{"userId":"004","userName":"sdfs","age":"23"},{"userId":"005","userName":"sdfs","age":"23"},{"userId":"006","userName":"Susan","age":"21"},{"userId":"007","userName":"sdfs","age":"23"},{"userId":"ds","userName":"ds","age":"ds"}] ****修改用户updateUser**** ****根据id查询用户**** 006Susan33 ****查询所有getAllUsers**** [{"userId":"002","userName":"sdfs","age":"23"},{"userId":"003","userName":"sdfs","age":"23"},{"userId":"004","userName":"sdfs","age":"23"},{"userId":"005","userName":"sdfs","age":"23"},{"userId":"006","userName":"Susan","age":"33"},{"userId":"007","userName":"sdfs","age":"23"},{"userId":"ds","userName":"ds","age":"ds"}] ****删除用户**** ****查询所有getAllUsers**** [{"userId":"002","userName":"sdfs","age":"23"},{"userId":"003","userName":"sdfs","age":"23"},{"userId":"004","userName":"sdfs","age":"23"},{"userId":"005","userName":"sdfs","age":"23"},{"userId":"007","userName":"sdfs","age":"23"},{"userId":"ds","userName":"ds","age":"ds"}] ``` **本章源码(含jar包)**:[https://github.com/waylau/RestDemo/tree/master/jersey-demo7-sqlserver-hibernate-spring3](https://github.com/waylau/RestDemo/tree/master/jersey-demo7-sqlserver-hibernate-spring3)