摘要:总结基于构建相对来说还是比较便捷的,其中注解使得代码更加简洁,本次用到注解再汇总下,有时间的话可以深入理解下其背后的原理申明让自动给程序进行必要的配置。风格的控制器提供路由信息,负责到中的具体函数的映射一般用于修饰层的组件自动导入依赖的
本文主要记录搭建RESTful API标准工程,包含比较推荐的工程结构,掌握一些基本注解,并引入Swagger新建一个项目
通过Spring Initializr创建工程,选择所需要的jar包,如下图:
工程结构Spring Boot框架对工程结构并没有什么特殊的限制,我这边基本按照网上主流和自己一些喜好进行划分,供参考:
代码层结构前端控制器(Controller): com.xxx.controller
数据服务层(Service): com.xxx.service
实体(Entity)与数据访问层(Repository):com.xxx.domain
公共方法及工具类: com.xxx.common
资源文件的结构配置文件: src/main/resources/config
静态文件: src/main/resources/static
模板: src/main/resources/templates
编写第一个服务在controller下新建类HelloController,相关代码做了简单的注释,如下:
//相当于 @Controller + @ResponseBody //该注解 方法method 返回类型是String时候则返回string,返回对象时候则讲json_encode 该对象的json字符串 @RestController public class HelloController { //该注解mapping指定路由 @RequestMapping(value = "/hello",method = RequestMethod.GET) public String SayHello() { return "Hello Spring Boot"; } }
编写到这里,已经可以直接编译运行了,这里值得注意的是被@SpringBootApplication注解的启动类一定要放在所有的RestController的根路径的package下,@SpringBootApplication只会扫描@SpringBootApplication注解标记类包下及其子包的类,如果不放在根路径下,可以指定下:@SpringBootApplication(scanBasePackages = "com.example.api_demo")
无需配置Tomcat,直接启动,输入对应的地址可看到结果:
增加service层在搭建了基础应用的基础上,我们增加service层抽离控制层和业务层代码。
在service下新增HelloService和HelloServiceImpl两个类,代码如下:
//业务层接口:HelloService public interface HelloService { public String sayHello(); } //接口实现:HelloServiceImpl @Service public class HelloServiceImpl implements HelloService{ @Override public String sayHello() { return "Hello Spring Boot"; } }
修改对应的controller代码:
@Autowired private HelloService helloService; @RequestMapping(value = "/hello",method = RequestMethod.GET) public String sayHello() { return helloService.sayHello(); }
这样,简单的拆分就完成了。
引入SwaggerSwagger是什么大家自行百度,对于Restful API来说,Swagger绝对是它的好基友。
首先引入对应的jar包,在pom.xml加入:
io.springfox springfox-swagger2 2.7.0 io.springfox springfox-swagger-ui 2.7.0
新增类Swagger2.java,代码如下:
@Configuration @EnableSwagger2 public class Swagger2 { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.example.api_demo.controller")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("测试文档") .description("这里是一段描述") .termsOfServiceUrl("http://www.bug2048.com/") .version("1.0") .build(); } }
到这里,Swagger就算配置完成了,接下来就是要添加文档内容了,修改之前的HelloController之后,直接编译运行,通过/swagger-ui.html就能看到效果
@ApiOperation(value="增加Service层输出Hello", notes="这是第二个demo") @RequestMapping(value = "/hello",method = RequestMethod.GET) public String sayHello() { return helloService.sayHello(); }
至此,简单的框架算是完成了,后面就可以逐步完善,包括接入日志,数据库等等,后面会持续更新。
总结基于Spring Boot构建RESTful API相对来说还是比较便捷的,其中注解使得代码更加简洁,本次用到注解再汇总下,有时间的话可以深入理解下其背后的原理:
@SpringBootApplication: 申明让spring boot自动给程序进行必要的配置。
@RestController:REST风格的控制器
@RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射
@Service:一般用于修饰service层的组件
@Autowired: 自动导入依赖的bean
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/68923.html
摘要:前两篇已经构建了标准工程实例,也整合了实现了简单数据库访问,本篇主要更深入的学习下,实现较为完整的数据库的标准服务。到这里,最复杂的数据访问基本就算编写完了。 前两篇已经构建了RESTful API标准工程实例,也整合了MyBatis实现了简单数据库访问,本篇主要更深入的学习下,实现较为完整的数据库CRUD的标准服务。 首先看下要实现的效果吧,完成下面截图部分的API,除了CRUD之外...
摘要:关闭进程问题顺利解决。问题泄也是一个奇葩的问题,百度一下,原来碰到的人挺多,原因就是高版本的驱动会有数据库和系统时区差异我用的版本是,所以碰到了,修改下配置,执行时区就可以了或者用回版本,该版本不会存在时区问题。 本文主要在上一篇Spring Boot学习笔记(四)构建RESTful API标准工程实例的基础上,整合MyBatis,实现简单的MySql数据库访问 引入依赖 这里主要依赖...
摘要:满足这些约束条件和原则的应用程序或设计就是。需要注意的是,是设计风格而不是标准。同一个路径,因为请求方式的不同,而去找寻不同的接口,完成对资源状态的转变。一个符合风格的就可以称之一个的接口。 RESTful 相信在座的各位对于RESTful都是略有耳闻,那么RESTful到底是什么呢? REST(Representational State Transfer)表述性状态转移是一组架构约...
摘要:框架具有轻便,开源的优点,所以本译见构建用户管理微服务五使用令牌和来实现身份验证往期译见系列文章在账号分享中持续连载,敬请查看在往期译见系列的文章中,我们已经建立了业务逻辑数据访问层和前端控制器但是忽略了对身份进行验证。 重拾后端之Spring Boot(四):使用JWT和Spring Security保护REST API 重拾后端之Spring Boot(一):REST API的搭建...
摘要:认证鉴权与权限控制在微服务架构中的设计与实现一引言本文系认证鉴权与权限控制在微服务架构中的设计与实现系列的第一篇,本系列预计四篇文章讲解微服务下的认证鉴权与权限控制的实现。 java 开源项目收集 平时收藏的 java 项目和工具 某小公司RESTful、共用接口、前后端分离、接口约定的实践 随着互联网高速发展,公司对项目开发周期不断缩短,我们面对各种需求,使用原有对接方式,各端已经很...
阅读 2078·2023-04-26 00:41
阅读 1092·2021-09-24 10:34
阅读 3538·2021-09-23 11:21
阅读 3597·2021-09-22 15:06
阅读 1507·2019-08-30 15:55
阅读 858·2019-08-30 15:54
阅读 1795·2019-08-30 15:48
阅读 508·2019-08-29 13:58