(一)、SpringBoot核心技术入门
官方文档: https://www.yuque.com/atguigu/springboot/na3pfd
1.Spring能做什么?
1.1、Spring 的能力
1.2、Spring的生态
https://spring.io/projects/spring-boot
覆盖了:
web开发
数据访问
安全控制
分布式
消息服务
…
1.3、Spring5重大升级
1.3.1、响应式编程
1.3.2、内部源码设计
基于Java8的一些新特性,如:接口默认实现。重新设计源码架构。
2.为什么用SpringBoot
2.1、SpringBoot优点
● Create stand-alone Spring applications
○ 创建独立Spring应用
● Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
○ 内嵌web
服务器
● Provide opinionated ‘starter’ dependencies to simplify your build configuration
○ 自动starter依赖
,简化构建配置
● Automatically configure Spring and 3rd party libraries whenever possible
○ 自动配置Spring
以及第三方功能
● Provide production-ready features such as metrics, health checks, and externalized configuration
○ 提供生产级别的监控
、健康检查及外部化配置
● Absolutely no code generation and no requirement for XML configuration
○ 无代码生成、无需编写XML
SpringBoot的底层是Spring.Spring的底层是Java。
2.2、SpringBoot缺点
● 人称版本帝,迭代快
,需要时刻关注变化
● 封装太深,内部原理复杂,不容易精通
3.时代背景
3.1、微服务
● 微服务是一种架构风格
● 一个应用拆分为一组小型服务
● 每个服务运行在自己的进程内,也就是可独立部署
和升级
● 服务之间使用轻量级
HTTP交互
● 服务围绕业务功能拆分
● 可以由全自动部署
机制独立部署
● 去中心化,服务自治。服务可以使用不同的语言、不同的存储技术
3.2、分布式的困难
● 远程调用
● 服务发现
● 负载均衡
● 服务容错
● 配置管理
● 服务监控
● 链路追踪
● 日志管理
● 任务调度
● …
3.3、云原生
原生应用如何上云。 Cloud Native
上云的困难
● 服务自愈
● 弹性伸缩
● 服务隔离
● 自动化部署
● 灰度发布
● 流量治理
● …
上云的解决
4.如何学习SpringBoot
4.1、查看官方文档
SpringBoot 2.4.13 官方文档: https://docs.spring.io/spring-boot/docs/2.4.13/reference/html//
(二)、SpringBoot2入门
1.系统要求
● Java 8 & 兼容java14 .
● Maven 3.3+
● idea 2019.1.2
1.1、maven设置
1.查看自己的Maven版本:
mvn -version
2.打开自己的Maven配置文件
// 使用阿里云的镜像进行下载 <mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> </mirrors> // 使用jdk1.8进行编译 <profiles> <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile> </profiles>
2.HelloWord
2.1、创建maven工程
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
2.3、创建主程序
/** * 主程序类 * @SpringBootApplication:这是一个SpringBoot应用 */ @SpringBootApplication public class MainApplication { public static void main(String[] args) { SpringApplication.run(MainApplication.class,args); } }
2.4、编写业务
@RestController public class HelloController { @RequestMapping("/hello") public String handle01(){ return "Hello, Spring Boot 2!"; } }
2.5、RestController源码 ⭐
@Controller + @ResponseBody = @RestController
package org.springframework.web.bind.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.core.annotation.AliasFor; import org.springframework.stereotype.Controller; @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Controller ⭐⭐ @ResponseBody ⭐⭐ public @interface RestController { @AliasFor( annotation = Controller.class ) String value() default ""; }
2.6、测试是否成功