啊快入职了还是把框架学一下…虽然还不晓得是啥方向…
俺是跟着B站字母哥的视频梳理的(感觉他的视频比较精简的亚子)
概念知识
不得不说SpringBoot写CRUD还真比不用框架方便好多。
首先这玩意与Spring不同的地方在于它内置了Tomcat,所以无需另外启动Tomcat,而且可以自动装配(然后这玩意就又是个面试考点…算了以后再学),这就又比Spring方便不少。
只需引入一个Spring Boot Starter基本上就可以干活了,它引入了一些常用的类库。
SpringBoot若使用Maven,它的POM文件默认继承了spring-boot-starter-parent,方便对导入jar包进行版本控制,避免出现冲突。
然后还提供了一些好用的API对数据库提供支持
方(偷)便(懒)插件(本机为IDEA)
lombok
这个介绍的应该很多,首先在Settings->Plugins中安装Lombok插件,然后再导入相关的Lombok包。
经常使用的的注解有:
1.@Data:生成get/set方法
2.@Buider:生成建造者模式
3.@AllArgsConstructor/@NoArgsConstructor:生成全域/空参构造器
4.@Slf4j:自动引入Logger日志常量
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
lombok中的注解是通过前端编译器(javac)在生成语法树时,扫描到如果存在注解,将对应的语法树插入到现语法树中,然后生成字节码。
devtools实现热加载
使用俩类加载器,一个用于加载依赖(这些一般不会变),一个用于加载自编代码。
导入以下jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
然后使用快捷键Ctrl+shift+alt+/
,点击
选中
然后每次改动代码之后仅需要使用快捷键ctrl+F9即可重新编译
Codota
代码补全与可能的补全方式,同时提供一些类库的常见使用。
Auto filling Java call arguments
自动填充方法参数
点击ALT+回车,选中
GsonFormat4DataBinding
将JSON转换为实体类
点击alt+D
将JSON粘贴到其中,选中OK即可。
Rainbow Brackets
彩虹括号,方便看少了哪层括号
Maven Helper
方便看是否存在Jar包冲突
选中POM.xml下方多了一个Dependency Analyer
Key promoter X
方便记忆快捷键
RESTful风格的API
SpringBoot常用注解
HTTP协议的四种传参方式
@RequestBody
修饰请求参数,注解用于接收HTTP的body,默认使用JSON格式,可用于复杂数据的传参
public AjaxResponse saveArticle(@RequestBody Article article)
@ResponseBody
修饰返回值,说明携带响应数据,加上这个注解就说明为一个数据接口,不会走视图解析
public @ResponseBody AjaxResponse saveArticle(@RequestBody Article article)
@RequestMapping
用于标注服务端点。
@RequestMapping("/rest")
public class ArticleController
也有指定的方法的@DeleteMapping@PutMappin@PostMapping@GetMapping
@PostMapping("/articles")
public AjaxResponse saveArticle(@RequestBody Article article)
@RestController与@Controller
@RestController
public class ArticleController
@RestController: 说明被标注的类为Spring的Bean,需要被注入到Spring上下文环境中。所有被标注@RequestMapping的方法都是HTTP服务端点。
@RestController: 相当于@Controller+n×@ResponseBody
@PathVariable 与@RequestParam
@PathVariable: 将url后的参数传入API中
@GetMapping("/articles/{id}")
public AjaxResponse getArticle(@PathVariable("id") Integer id)
**@RequestParam:**通过表单或者ajax模拟表单传参
@DeleteMapping("/articles")
public AjaxResponse deleteArticle(@PathParam("id") Integer id)
CRUD测试代码
@Slf4j
//所有的方法都对外提供WEB服务
//默认给,每个方法加上@ResponseBody注解,表示响应json格式的内容
//@Controller+@ResponseBody
@RequestMapping("/rest")
@RestController
public class ArticleController {
// @Resource
// ArticleService articleService;
//查询一篇文章根据id
//@RequestMapping(value = "/articles/{id}",method = RequestMethod.GET)
@GetMapping("/articles/{id}")
public AjaxResponse getArticle(@PathVariable("id") Integer id){
Article article = Article.builder().id(id).email("920@qq.com").firstName("y").lastName("dl").createTime(new Date()).build();
log.info("article:"+article);
AjaxResponse ajaxResponse = AjaxResponse.success(article);
return ajaxResponse;
}
@PostMapping