首先把jersey的相关jar放到WEB-INF/lib目录下
web.xml
<servlet> <servlet-name>Jersey Spring</servlet-name> <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.axisspring.api</param-value>//你的web service类所在的包 </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey Spring</servlet-name> <url-pattern>/api/*</url-pattern>//你想匹配的路径 </servlet-mapping>
application-context.xml
<context:annotation-config /> <context:component-scan base-package="com.axisspring.api" /> <bean id="apiDao" class="com.axisspring.dao.ApiDao"> </bean> <bean id="apiService" class="com.axisspring.api.ApiService" > </bean> <bean id="apiService2" class="com.axisspring.api.ApiService2"> </bean> <bean id="apiService3" class="com.axisspring.api.ApiService3"> </bean>
ApiDao
public class ApiDao { public String getName() { return "mock"; } }
ApiService
@Path("s1") @Component @Scope("request") public class ApiService { private int count; @Autowired private ApiDao apiDao; @GET @Produces(MediaType.APPLICATION_XML) public List<City> getCity(@DefaultValue("shanghai") @QueryParam("cname") String cityName) { count++;//这里虽然scope设置的是request,但实际上只有一个对象count会一直累加 ???? List<City> a = new ArrayList<City>(); for (int i = 0; i < 10; i++) { City c = new City(); c.setName(cityName+ " " + i+" "+count); c.setZone("zone " + i + apiDao.getName()); a.add(c); } return a; }
City
@XmlRootElement //加上这个才能解析成json 或 xml public class City { private String name; private String zone;
ApiService2
@Path("s2") @Component @Scope("request") public class ApiService2 { @Autowired private ApiDao apiDao; @GET @Produces(MediaType.APPLICATION_JSON) public Person getCity(@DefaultValue("shanghai") @QueryParam("cname") String cityName) { Person p = new Person(); p.setAge(22); p.setName("lich"); City c = new City(); c.setName(cityName); c.setZone("zone " + apiDao.getName()); p.setCity(c); return p; }
输出
http://localhost:8080/axisspring/api/s1
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><cities><city><name>shanghai 0 1</name><zone>zone 0mock</zone></city><city><name>shanghai 1 1</name><zone>zone 1mock</zone></city><city><name>shanghai 2 1</name><zone>zone 2mock</zone></city><city><name>shanghai 3 1</name><zone>zone 3mock</zone></city><city><name>shanghai 4 1</name><zone>zone 4mock</zone></city><city><name>shanghai 5 1</name><zone>zone 5mock</zone></city><city><name>shanghai 6 1</name><zone>zone 6mock</zone></city><city><name>shanghai 7 1</name><zone>zone 7mock</zone></city><city><name>shanghai 8 1</name><zone>zone 8mock</zone></city><city><name>shanghai 9 1</name><zone>zone 9mock</zone></city></cities>
http://localhost:8080/axisspring/api/s2
{"age":"22","city":{"name":"shanghai","zone":"zone mock"},"name":"lich"}