项目基于Maven搭建,采用Spring4.2.4、Hibernate4.3.11Final并结合 jersey实现rest风格的WebService,代码结构如图1-1:
图1-1 项目结构图
由于使用了jetty插件,所以不需要而外的tomcat,所以运行时,使用Run As—>Maven Buld,输入jetty:run即可如图1-2:
1-2jetty运行截图
1.2说明
用jetty运行项目后,在浏览器输入http://localhost:8080/lyt-jersey会自动跳转到http://localhost:8080/lyt-jersey/api-docs/如图1-3:
图1-3 程序运行图
点击相应的标签就可以模拟相应的rest风格的事件请求,如图1-4:
图1-4 rest风格请求效果
将war包导出至项目中,启动web容器即可。后面的效果和1.2相同。
代码结构如图1-5:
图1-5 代码结构图
org.anttix.example.shj.spring是一些配置文件的注解描述。由于项目使用servlet3.0,所以并没有使用任何的配置文件,所以得相关配置都是以注解的形式硬编码。
下面以org.anttix.example.shj.spring.HSQLDataSource来说明
图1-6 实例代码说明
@Bean 说明这个是一个归属Spring管理的一个类,在项目启动时有Spring利用java的反射创建。
属性设置是通过setProperty(AvailableSettings.HBM2DDL_AUTO,"create-drop");类似的方法实现的,这个方法的意思是设置数据库的表的生成形式。
整个项目最关键的是web.xml的配置,这里主要说明下jersey在web.xml里面的配置
<servlet> <servlet-name>jersey-servlet</servlet-name> <!—这个是jersey与Spring整合的servlet--> <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>org.anttix.example.shj.services;org.anttix.example.shj.rest;com.wordnik.swagger.jaxrs.listing</param-value> </init-param> <init-param> <param-name>swagger.config.reader</param-name> <param-value>org.anttix.example.shj.rest.ApiDocConfig</param-value> </init-param> <init-param> <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>jersey-servlet</servlet-name> <!—拦截什么样的请求使用jersey--> <url-pattern>/rest/*</url-pattern> </servlet-mapping> |
com.sun.jersey.spi.spring.container.servlet.SpringServlet:
这个是jersey与Spring整合的servlet,里面含有众多的配置参数如:需要扫描那些包,启动时间等。
com.sun.jersey.config.property.packages:
这个是项目启动时哪些包被扫描。
<url-pattern>/rest/*</url-pattern>:
说明什么样的请求使用jersey