SpringBoot学习总结Word格式.docx
《SpringBoot学习总结Word格式.docx》由会员分享,可在线阅读,更多相关《SpringBoot学习总结Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
provided<
/scope>
org.apache.tomcat.embed<
tomcat-embed-jasper<
启动类上班必须有@SpringBootApplication注解,controller类要加@RestController注解,方法上配置@RequestMaping注解
@SpringBootApplication
publicclassApplication{
publicstaticvoidmain(String[]args){
SpringApplication.run(Application.class,args);
}
注解与模板
讲解:
@Controller注解:
处理http请求
@RestController注解:
Spring4之后新加的注解,等同于返回json注解的@ResponseBody+controller注解的组合注解
@RequestMapping注解:
配置url配置
@PathVariable获取url中的数据
@RequestParam获取请求参数的值
如果仅仅使用@Controller,返回的字符串就是页面的名称,需要加入srping官方的模板引擎,在pom.xml中配置,
spring-boot-starter-thymeleaf<
属性配置
application.properties为springboot的默认配置文件,可配置端口server.port=8081可配置项目路径server.context-path=/gril,访问路径时的路径就变成localhost:
8081/gril/controller名称
application.yml文件是springboot的另一种配置文件,这种文件可以减少重复值(推荐,注意:
冒号后要加空格)
server:
port:
8080
context-path:
/gril
在yml文件中自定义属性时,在controller中使用@Value(“${gril}”)
yml:
gril:
liuyandeng
controller:
@Value(“${gril}”)
privateStringgril;
(配置文件中部分类型,如果是数字类型可以写成privateintegerlyd;
)
属性映射到bean
name:
liuyandeng
age:
25
创建Gril.java的java文件,类上加@Component和@ConfigurationProperties(prefix="
gril"
),创建privateStringname;
和privateIntegerage;
属性创建get和set方法,获取配置文件前缀是gril的配置映射到javabean属性中,
在controller中注入这个bean@AutowiredGirlgril;
如果有多个配置文件比如application.yml,application-A.yml和application-B.yml,如果想使用B配置文件,可在application.yml文件中配置
spring:
profiles:
active:
B
数据库操作
thymeleaf:
prefix:
/WEB-INF/views/
suffix:
.html
mode:
HTML5
encoding:
UTF-8
content-type:
text/html
cache:
false
datasource:
test
url:
jdbc:
mysql:
//localhost:
3306/cgfy-springBoot?
useUnicode=true&
amp;
characterEncoding=UTF-8
username:
root
password:
123456
#使用druid数据源
type:
com.alibaba.druid.pool.DruidDataSource
driver-class-name:
com.mysql.jdbc.Driver
minIdle:
1
maxActive:
20
initialSize:
timeBetweenEvictionRunsMillis:
3000
minEvictableIdleTimeMillis:
300000
testWhileIdle:
true
testOnBorrow:
testOnReturn:
mybatis:
mapperLocations:
classpath*:
mapper/*.xml
typeAliasesPackage:
com.jeff.model
JAP(JavaPersistenceAPI)定义了一系列对象持久化的标准,目前实现这一规范的产品有hibernate,toplink等
SpringBoot中使用Swagger2构建强大的RESTfulAPI文档
由于SpringBoot能够快速开发、便捷部署等特性,相信有很大一部分SpringBoot的用户会用来构建RESTfulAPI。
而我们构建RESTfulAPI的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端。
这样一来,我们的RESTfulAPI就有可能要面对多个开发人员或多个开发团队:
IOS开发、Android开发或是Web开发等。
为了减少与其他团队平时开发期间的频繁沟通成本,传统做法我们会创建一份RESTfulAPI文档来记录所有接口细节,然而这样的做法有以下几个问题:
∙由于接口众多,并且细节复杂(需要考虑不同的HTTP请求类型、HTTP头部信息、HTTP请求内容等),高质量地创建这份文档本身就是件非常吃力的事,下游的抱怨声不绝于耳。
∙随着时间推移,不断修改接口实现的时候都必须同步修改接口文档,而文档与代码又处于两个不同的媒介,除非有严格的管理机制,不然很容易导致不一致现象。
为了解决上面这样的问题,本文将介绍RESTfulAPI的重磅好伙伴Swagger2,它可以轻松的整合到SpringBoot中,并与SpringMVC程序配合组织出强大RESTfulAPI文档。
它既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合为一体,可以让我们在修改代码逻辑的同时方便的修改文档说明。
另外Swagger2也提供了强大的页面测试功能来调试每个RESTfulAPI。
具体效果如下图所示:
下面来具体介绍,如果在SpringBoot中使用Swagger2。
首先,我们需要一个SpringBoot实现的RESTfulAPI工程
添加Swagger2依赖
在pom.xml中加入Swagger2的依赖
\
io.springfox<
springfox-swagger2<
version>
2.2.2<
/version>
springfox-swagger-ui<
创建Swagger2配置类
在Application.java同级创建Swagger2的配置类Swagger2。
@Configuration
@EnableSwagger2
publicclassSwagger2{
@Bean
publicDocketcreateRestApi(){
returnnewDocket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("
com.didispace.web"
))
.paths(PathSelectors.any())
.build();
privateApiInfoapiInfo(){
returnnewApiInfoBuilder()
.title("
SpringBoot中使用Swagger2构建RESTfulAPIs"
.description("
更多SpringBoot相关文章请关注:
.termsOfServiceUrl("
.contact("
程序猿DD"
.version("
1.0"
}
如上代码所示,通过@Configuration注解,让Spring来加载该类配置。
再通过@EnableSwagger2注解来启用Swagger2。
再通过createRestApi函数创建Docket的Bean之后,apiInfo()用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。
select()函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现,本例采用指定扫描的包路径来定义,Swagger会扫描该包下所有Controller定义的API,并产生文档内容(除了被@ApiIgnore指定的请求)。
添加文档内容
在完成了上述配置后,其实已经可以生产文档内容,但是这样的文档主要针对请求本身,而描述主要来源于函数等命名产生,对用户并不友好,我们通常需要自己增加一些说明来丰富文档内容。
如下所示,我们通过@ApiOperation注解来给API增加说明、通过@ApiImplicitParams、@ApiImplicitParam注解来给参数增加说明。
@RestController
@RequestMapping(value="
/users"
)//通过这里配置使下面的映射都在/users下,可去除
publicclassUserController{
staticMap<
Long,User>
users=Collections.synchronizedMap(newHashMap<
());
@ApiOperation(value="
获取用户列表"
notes="
"
@RequestMapping(value={"
},method=RequestMethod.GET)
publicList<
User>
getUserList(){
List<
r=newArrayList<
(users.values());
returnr;
创建用户"
根据User对象创建用户"
@ApiImplicitParam(name="
user"
value="
用户详细实体user"
required=true,dataType="
User"
@RequestMapping(value="
method=RequestMethod.POST)
publicStringpostUser(@RequestBodyUseruser){
users.put(user.getId(),user);
return"
success"
;
获取用户详细信息"
根据url的id来获取用户详细信息"
id"
用户ID"
Long"
/{id}"
method=RequestMethod.GET)
publicUsergetUser(@PathVariableLongid){
returnusers.get(id);
更新用户详细信息"
根据url的id来指定更新对象,并根据传过来的user信息来更新用户详细信息"
@ApiImplicitParams({
),
})
method=RequestMethod.PUT)
publicStringputUser(@PathVariableLongid,@RequestBodyUseruser){
Useru=users.get(id);
u.setName(user.getName());
u.setAge(user.getAge());
users.put(id,u);
删除用户"
根据url的id来指定删除对象"
method=RequestMethod.DELETE)
publicStringdeleteUser(@PathVariableLongid){
users.remove(id);
完成上述代码添加上,启动SpringBoot程序,访问:
http:
8080/swagger-ui.html
。
就能看到前文所展示的RESTfulAPI的页面。
我们可以再点开具体的API请求,以POST类型的/users请求为例,可找到上述代码中我们配置的Notes信息以及参数user的描述信息,如下图所示。
API文档访问与调试
在上图请求的页面中,我们看到user的Value是个输入框?
是的,Swagger除了查看接口功能外,还提供了调试测试功能,我们可以点击上图中右侧的ModelSchema(黄色区域:
它指明了User的数据结构),此时Value中就有了user对象的模板,我们只需要稍适修改,点击下方“Tryitout!
”按钮,即可完成了一次请求调用!
此时,你也可以通过几个GET请求来验证之前的POST请求是否正确。
相比为这些接口编写文档的工作,我们增加的配置内容是非常少而且精简的,对于原有代码的侵入也在忍受范围之内。
因此,在构建RESTfulAPI的同时,加入swagger来对API文档进行管理,是个不错的选择。
链接:
个人理解:
RESTfulAPI也就是一个可以脱离前端配合而调试接口的方法列表,可输入参数,调用接口,看到返回结果