第一次使用spring boot开发接口项目,对接口使用的技术做了个大概的梳理,细节没有展开,详细可参看官网文档。
1.项目监控:使用spring boot admin server,可以详细的查看应用运行的内存使用情况,GC情况,磁盘,日志等等。
2.权限控制:使用spring boot security,控制哪些ip可以访问接口服务,可以访问哪些资源。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
3.请求参数解析,校验:包括GET,POST请求参数解析,使用validate注解校验传入参数的合法性,如值范围的合法性。
4.处理结果统一封装:用java对象封装结果响应实体,便于统一管理。
5.异常处理:对全局异常进行处理并响应。
6.数据访问:如果只是简单的查询数据库,不需要映射java Bean,可以使用jdbcTemplate,否则可以使用mybatis或者jda,区别是:mybatis可以编写更加灵活的SQL。jpa底层使用的hibernate,sql几乎可以做到全自动生成,不需要手写。
7.数据缓存:对于要经常访问的数据,可以写在缓存里,以提高访问速度。
8.接口发布:swagger插件可以自动发布接口,接口修改后,无需手动维护。
9.多数据源:应用一部分接口需要访问库A,一部分需要访问库B,这个时候可以配置多数据源进行处理。
10.跨域问题:实现WebMvcConfigurer接口,重写addCorsMappings方法。
11.接口无缝升级:A版本在线上运行,我们期望新版本B上线的时候,接口可以继续对外提供服务,也就是A版本可以继续服务,待B上线成功后,切换至B版本,下掉A版本,因为我们的应用是部署在k8s+docker上,k8s可以实现这个功能。
12.配置中心:配置交由Apollo配置中心统一管理和发布,不再打包在应用程序jar包中,分环境、分集群管理,修改立即生效。