java spring,springmvc,spring boot,spring data,RESTful api设计风格,HTTP协议的四种传参方式,常用注解
一.基本技术
1.Springmvc=手动接电线(配置xml),提供了一种友好的方式来开发Web应用程序。 通过使用诸如Dispatcher Servlet,ModelAndView和View Resolver,可以轻松开发Web应用程序。
2.Spring Boot=标准插座(第3方开源类库想接入,就按照标准做一个starter的适配),实现了免xml配置和提供更佳的开发体验,Spring 和 Spring MVC最大的弊病在于存在大量的配置,并且这些配置在不同的项目中具有很高的相似性。从而导致重复配置,繁琐而且杂乱!
3.Sping=Spring框架最核心的特性就是依赖注入DI(Dependency Injecttion)和控制反转IOC(Inversion Of Control)。如果你能够合理的使用DI和IOC,可以开发出松耦合、扩展性好的的应用程序
4.Spring Boot Starter是一组被依赖第三方类库的集合
5.Spring-boot-starter-parent:所有的Spring Boot项目默认使用spring-boot-starter-parent作为应用程序的父项目,好处在于: 统一java版本配置和其他的一些依赖类库的版本.
6.嵌入式的web容器:Spring boot打成jar包,默认包含嵌入式的web容器:tomcat。你可以简单的使用如下命令启动一个web服务:java -jar springboot-demo.jar
7.Spring Data: spring data mongodb--MongoDB的操作API
8.Spring boot2.x:最低要求jdk8+java8
9.阿里的Druid有中文的开源社区,交流起来更加方便,并且经过阿里多个系统的实验,想必也是非常的稳定,而Hikari是SpringBoot2.0默认的连接池
10.spring boot2.x:
11.redis客户端默认使用 Lettuce
12.数据库连接池默认使用HikariCP
13.支持quartz
14.支持JOOQ访问关系型数据库工具包.
15.插件:
No name des
1 HikariCP 日本人开发的数据库连接池开源组件”追光者”
2 lombok 减少重复性的工作:
二。常用注解
1.@Data注解,将为我们在编译期自动生成
成员变量的get和set方法
equals方法
canEqual方法
hashCode方法
toString方法
2.Slf4j注解 类上面添加注解,编译时自动生成
将在编译期自动帮我们引入Logger日志常量,我们在代码中就直接使用log.info或log.debug打印日志即可
3.@Builder注解:在Java类上使用Builder注解之后,我们可以使用如下代码为对象属性赋值通过对象属性的链式赋值构建对象的方法
4.@AllArgsConstructor注解将为我们在编译期自动生成:全参构造函数。
5.@NoArgsConstructor注解:无参构造函数注解
2 devtools 实现热加载
3 codota 极其强大的代码自动补
4 Auto filling java call arguments 自动补全函数参数
5 GsonFormat GsonFormat插件工具可以快速的将JSON转换为实体类
/**
* id : 1
* author : zimug
* title : 手摸手教你开发spring boot
* content : c
* createTime :
* reader : [{"name":"zimug","age":18},{"name":"kobe","age":37}]
*/
private Long id;
private String author;
private String title;
private String content;
private String createTime;
private List<ReaderBean> reader;
6 Rainbow brackets 代码由于括号太多,不确定当前代码行是否属于某个代码块,此时这个插件就会帮上大忙
7 Maven helper 日常开发中,可能经常会遇到jar包冲突等问题,就需要通过查看maven依赖树来查看依赖情况。这种方式不是很高效,这里推荐一个插件,安装之后,直接打开pom文件,即可查看依赖数,还能自动分析是否存在jar包冲突。
8 Key promoter x Key Promoter X 是一个提示插件,当你在IDEA里面使用鼠标的时候,如果这个鼠标操作是能够用快捷键替代的,那么Key Promoter X会弹出一个提示框,告知你这个鼠标操作可以用什么快捷键替代。
当我使用鼠标查看一个方法都被哪些类使用的时候,就会在右下角提示(idea-->help-->find action--set backround image
16.Http RESTful api设计风格:
GET /api/dogs/{id}
GET /api/dogs 获取一个小狗
POST /api/dogs/{id} 添加一个小狗
PUT /api/dogs/{id} 修改一个小狗
DELETE /api/dogs/{id} 删除一个小狗
CRUD Create,read,update,delete
Http status 200:ok
201:用户名密码错误;202:无权限
400:bad request
500 interal server error
使用复数名词 /dogs
/cars/711/drivers/4
资源过滤,排序,选择和分页的表述 /cars?color=red;/cars?seats<=4
/cars?fields=a,b,c,id
/cars?offset=10&limit=5
版本化你的API /api/v1/blog
/api/v2/blog
17.HTTP协议的四种传参方式
http协议组成 协议内容示例 对应spring注解
Path info传参 /articles/12 @PathVariable
URL query string 传参 /articles?id=12 @ReqeustParam表单数据提交
Body传参 Content-type:multipart/form-data @RequestParam
Body传参 Content-type:application/json @RequestBody
能够使用对象或者嵌套对象接收前端数据
Header传参 @RequestHeader
18.常用注解
1 @RequestBody 用于接收http的body JSON格式的参数
能够使用对象或者嵌套对象接收前端数据
2 @ResponseBody 用于在body中携带响应数据,是一个数据接口
3 @RequestMapping
@GetMapping
@PutMapping
@DeleteMapping 用于标准http服务端点
@RequestMapping(value=”/dogs”,method=POST)
@PostMapping(value=”/dogs”)
4 @RestController
@Controller 1.告诉spring被该注解标准的类是一个spring的Bean,需要被注入到spring的上下文环境中
2.该类里面所有被@requestmapping标准的都是http服务端点。
-------Java知识体系-----------------
一.基础环境: JKD8+maven3+IntelliJ IDEA
二.开发技术层:
2.1常用注解
2.2常用插件:lombok
2.3 配置文件
2.4 RESTful接口
2.5 拦截器,监听器,过滤器,启动监听
2.6 服务器推送技术,SSE,websocket
三.架构服务层:
3.1 日志框架集成log4j2
3.3 邮件发送:基于模版,html邮件,内联附件和常用附件
3.4 定时任务与异步任务,quartz
3.5 内置容器与外置打包,tomcat,jetty,
3.6 消息队列RabbitMQ集成与基本使用
四.持久层:
4.1 Spring Session分布式
4.2 Spring Cache缓存
4.3 Spring Data REST
4.4 多数据库源
4.5 分布式事务
五. 数据库工具类库集成
5.1 NOSQL数据库:Spring Data Reids,Spring Data Mongodb
5.2 关系型数据库: JPA,Mybatis
5.3 文件对象存储:FastDFS
六.Cloud核心组件
6.1 网关:Spring cloud GateWay
6.2 配置管理:Spring cloud Nacos,Apollo
6.3 认真服务: Spring Security OAth,JWT
6.4 服务注册中心:Nacos,consul,zookeeper
6.5 远程服务调用基础:Ribbon,LoadBalancer
6.6 声明式远程服务调用:OpenFeign
6.7 容错限流:Sentienl
七.Demo架构
71.Vue+Spring Security+Spring Boot+mysql8.0