SpringBoot 学习总结(持续更新)
1.SpringBoot是什么Spring Boot是一个基于 Spring 框架的快速开发框架目标是简化 Spring 应用程序的初始设置和开发过程那它到底怎么做的呢我们需要从框架的概念再到 Spring 框架然后再到Spring Boot框架。框架顾名思义就是平常开发java时有些工具类配置类咱们不需要每次重新开发可以从之前项目中复制这个就是框架的雏形。咱们可以在每次开发的时候用已经写好的代码 进行重复使用就不需要自己再重写了这些代码的集合就叫做框架。Spring 就是框架它主要是通过容器来管理对象的框架管理对象的创建和使用其实它就是一个小瓶子你可以通过它的规范把你的对象放在这个 Spring 的小瓶子里面 这样你就实现了对这个项目中的对象进行集中管理这个框架的思路就叫IoC控制反转这样我们就实现了项目的解耦。不用Spring老办法饭、菜、碗、筷子全部都要你自己亲手做、亲手准备想吃啥自己弄所有事自己说了算用Spring控制反转你啥都不用准备有个食堂Spring容器提前把饭、菜、碗筷全部备好你只需要坐下张嘴吃就行。啥是控制反转以前你自己掌控一切自己准备所有东西现在不用你准备食堂提前备好给你做事的主动权从你身上转到食堂身上。主动权反过来了。啥叫管理对象饭菜碗筷就是代码里的对象食堂统一收好、备好就是Spring统一管理啥叫解耦以前你必须自己做饭不会做就吃不上现在食堂换厨师、换菜品你照样坐着吃不受影响。关于项目解耦举个例子咱们平时使用的是这个比较常用的数据库就是 mysql假如我们的项目要换成其他的数据库如果不使用这个 IoC每次切换数据库时都需要修改很多地方的代码比如这个数据库的连接sql 语句的设置甚至是数据库相关的配置。有了 IoC你就可以通过 Spring 容器来实现解耦避免直接去修改代码。IoC 一般的实现逻辑就是先定义一个接口然后定义它的通用方法避免硬编码然后你可以根据你的实际情况定义多个实现类然后在 XML 文件中配置确定这个接口对应的对象类对象是哪一个就可以正常使用了这样就实现了代码的解耦不用修改一行代码就把对象给换了。为了照顾我们小白Spring 官方开发出了Spring Boot框架它的特点约定大于配置也就是在Spring 中很多需要配置的东西在 Spring Boot里面直接默认就能使用了。在 Spring Boot 中有很多种办法在这个容器中创建对象比方说你可以使用这个 component 注解来修饰你的类只要这样一修饰就在容器中创建了这个类的对象。import org.springframework.stereotype.Component Component public class GreetingService { public String getGreeting(String name) { return hello, name !; } }还有一种就是通过配置类来进行管理也就是如下在后续过程中会给大家进行演示。import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; Configuration public class AppConfig { //定义一个 Bean 返回 GreetingService 实例 Bean public GreetingService greetingService() { return new GreetingService; } }当然 Spring 自身也整合了很多的开源技术通过定义好的注解就可以往 Spring Boot中注入相应的对象从而实现相关功能。比如用来替代 Servlet 开发的 Spring MVC 框架。咱们只需要在上面加个 RestController 或 Controller 就可以往容器里添加我们的 Spring MVC 对象了。package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; SpringBootApplication RestController public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } GetMapping(/hello) public String hello(RequestParam(value name, defaultValue World) String name) { return String.format(Hello %s!, name); } }除此之外Spring Boot 还内嵌了 tomcat 服务器在运行启动类的时候呢tomcat 就已经启动了只用把 jar 包放在服务器上就可以运行了2.快速体验场景浏览器发送/hello请求返回Hello,Spring Boot 3!1.创建项目maven项目!--所有springboot项⽬都必须继承⾃spring-boot-starter-parent -- parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.0.5/version /parent2.导入场景场景启动器dependencies !-- web开发的场景启动器 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency /dependencies3.主程序import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * 启动SpringBoot项目的主入口程序 */ SpringBootApplication /* SpringBootApplication 是 SpringBoot 的核心注解作用是开启自动配置、扫描组件、启动整个项目。 没按之前车是死的 一按 SpringBootApplication 发动机启动 电路接通 空调可用 方向盘能用 全部自动准备好 */ public class Main { public static void main(String[] args) { SpringApplication.run(Main.class,args); /* SpringApplicationSpringBoot 自带的启动工具专门用来开项目 run()就是 “运行、启动” 的意思 Main.class告诉工具我的项目入口是 Main 这个类 args运行参数固定写法新手完全不用管 */ } }4.业务import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; //ResponseBody //Controller /* RestController 放在类上面 表示我这个类要给浏览器返回数据 */ RestController public class HelloController { /* GetMapping(/hello) 放在方法上面 表示浏览器访问 /hello 就跑我这个方法 */ GetMapping(/hello) public String hello(){ return Hello,Spring Boot 3!; } }5.测试默认启动访问 localhost:80806.打包!-- SpringBoot应⽤打包插件-- build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId /plugin /plugins /build注这个application.properties其实就是 Spring Boot 的配置文件配置对象的一些参数例如定义数据库的账户名和密码项目的端口号等等。但不是主流了可以将后缀改成 yml 文件。3.Spring Boot 整合 Spring MVC 实现第一个 API 接口pom 文件中添加依赖dependencies !-- web开发的场景启动器 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency /dependencies现在的 Spring MVC 不需要 XML 文件的配置只需要在对应的类上添加 RestController 或者 Controller 注解就可以了package com.example.springbootproject; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RestController; SpringBootApplication RestController //只要写这个注释就相当于在 Spring 容器中创建了一个 Spring MVC 对象 //接受请求的话就需要创建方法 public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args);} /** * *hello *return **/ //在方法上添加一个注解和访问路径进行匹配 RequestMapping(/hello) //这个注解里面的hello前缀就是说当访问这个路径的时候会执行当前的方法 public String hello(){ return Hello World; } }RestController 和 Controller 注解有什么区别- RestController 修饰的类返回的参数全部序列化成 json 的形式返回到前端。适合前后端分离的项目。- Controller 可以返回视图例如 Controller 它可以直接返回 HTML 页面 JSP 页面等。运行成功图片给这个类所有的请求都需要加一个前缀 index只需要在 public class DemoApplication { 前一行加个RequestMapping(/index)那么怎么给这个工程里面的所有请求之前 加上一个不固定的前缀 API- 在 application.yml 文件里进行统一的配置添加server: servlet: context-path:/api运行效果图片如何修改项目的端口- yml 文件进行配置直接在这个 server 下面添加这个 port 属性server: servlet: context-path:/api port:90运行效果图片4.Spring MVC 实现 Restful API 请求方法