Demo已放到github: https://github.com/cbamls/restfulApi
Swagger简介:
Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。
本项目简介:
1. 跟随“知秋”大神一步步学习J2EE,大神github:https://github.com/muyinchen
2. 整合Swagger构建一个开源restful接口管理平台
3. 目前只是整合好框架,未填充业务,所以是一个非常好的SSM Demo
4. 此文章只展示框架整合事宜,关于restfulAPI-idoc项目会有专门文章
项目整合结构大概这样:
其中idoc-common是项目通用工程,idoc-main是一个聚合工程,里面的四个Module把MVC做了分离,同时idoc-parent Module是所有模块的父工程,然后“小题大做”,抽出一个服务层对外提供rest业务调用,并独立出idoc-sso模块来做单点登录,redis来模拟session,idoc-sso统一管理登录认证、注册业务。
一些具体的操作:比如IDEA怎么多Module,maven依赖关系啥的,不扯了,大家自主学习
* 踩过的坑*
- spring4+后的版本不再有支持json交互的MappingJacksonHttpMessageConver类
之前版本这样配置:
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
spring4+后替换为:
<bean id="stringConverter"
class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
<bean id="jsonConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
<bean
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="stringConverter" />
<ref bean="jsonConverter" />
</list>
</property>
</bean>
2.项目启动某Module控制台不打印框架内部日志
日志系统整合的是 slf4j + log4j。pom.xml添加jar包支持:
版本已在idoc-parent工程指定。
<!--日志相关 采用slf4j + log4j-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<!--日志相关 end-->
因为springframwork 内部用的common-logging作为抽象日志访问接口,我加的log4j作为底层实现,现在要想换用日益火爆的slf4j作为抽象访问层,就要把spring依赖的comm-logging给排除掉
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>