基础知识:
官网地址:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
-
Spring与SpringBoot
-
Spring生态圈
- Web开发
- 数据访问
- 安全控制
- 分布式
- 消息服务
- 移动开发
- 批处理
- SpringBoot :整合Spring的整合生态圈。
- 优点:
- 创建独立的Spring应用
- 内嵌web服务器
- 自动Starter依赖,简化构建配置
- 提供生产级别的监控、健康检查及外部化配置
- 无代码生成、无须编写XML
- 优点:
-
-
微服务
- 微服务是一种架构风格
- 一个应用拆分为一组小型服务
- 每个服务运行在自己的进程内,也就是可以独立部署
- 服务之间使用轻量级的HTTP交互
- 服务围绕业务功能拆分
- 可以由全自动部署机制独立部署
- 去中心化,服务自治,服务可以使用不同的语言、不同的存储技术
-
分布式
- 分布式的困难
- 远程调用
- 服务发现
- 负载均衡
- 服务容错
- 配置管理
- 服务监控
- 链路追踪
- 日志管理
- ……
- 分布式的困难
-
学习 如果学习官网文档
- 官方文档结构
- https://spring.io/ ——》 Project ——》Spring Boot ——》LEARN——》CURRENT后面的Refenrence Doc。
- 官方文档结构
-
依赖管理
- 父项目依赖管理
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.1</version> </parent>
- 在parent中说明好了版本号,子项目就不需要版本号了。
- starter场景启动器
- 见到很多spring-boot-starter-*,*就表示某种场景
- 只要引入starter,这个场景的所有常规需要的依赖我们都自动引入
- *-spring-boot-starter,一般就是第三方的starter
- 所有场景启动器最底层的依赖就是 spring-boot-starter
- 开发导入
- 无需关注版本号,自动版本仲裁
- 可以修改版本号
- 父项目依赖管理
-
自动配置
- 自动配好tomcat
- 引入tomcat依赖
- 配置tomcat
- 自动配置spring-mvc
- 引入spring-mvc全套组件
- 自动配置好springmvc常用组件
- 自动配置好web的常见功能,如字符编码问题
- 配置好所有web开发的常见场景
- 默认的包结构
- 主程序所有的包及其下面的所有子包都会被扫描进来
- 无须配置包扫描
- 如果想要改变扫描路径 @SpringBootApplication(scanBasePackages="com.sun")
- ComponentScan指定需要扫描的路径
- 各种配置拥有默认值
- 默认配置最终都是映射到MultipartProperties
- 配置文件的值最终会绑定每个类上,这个类会在容器中创建对象
- 按需加载所有自动配置项
- 所有的自动配置都在 spring-boot-autoconfigure这个包下面
- 自动配好tomcat
- 容器功能
- 组件添加
- @Configuration(proxyBeanMenthods = false) 与@Bean
- @Bean、@Component、@Controller、@Service、@Repository
- @ComponentScan、@Import
- @Conditional
- 条件装配
- 原生配置文件引入
- @ImportResource 导入Spring的配置文件.xml,来进行生效
- 配置绑定
- @Componnet和@ConfigurationProperties(prefix="mycar"),如果放在类上面,那这个类中的属性值 如果与配置文件中的属性名一致就好,比如配置文件中是mycar.price,类中 的属性是 price,那就会自己配置绑定。
- 配置类中的写法
@configuration @EnableConfigurationProperties(Car.class) public class Myconfig{ }
@EnableConfigurationProperties 开启Car这个组件的配置绑定功能,把这个car的组件自动注入到容器,同时需要在Car类上面写好@ConfigurationProperties(prefix="mycar")
-
自动配置原理入门
@SpringBootApplication 其实 等于 三个注解 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan- @SpringBootConfiguration
- 当前是一个配置类
- @EnableAutoConfiguration
- 给容器中导入一系列组件
- 将指定一个包下的所有组件导入进来
-
最佳实践
-
引入场景依赖
-
查看自动配置了哪些
-
配置中配置debug=true,启动时会在控制台打印出 一些哪些配置生效了,哪些没有生效
-
-
是否需要修改
-
参照文档修改配置项
-
文档中的application properties中就有所有的配置项目
-
自己分析,从底层源码中拿取对应的
-
-
自定义加入或者替换组件
-
@Bean,@Component
-
-
自定义器 XXXCustomizer
-
-
-
定制化修改自动配置
-
按需开启自动配置项
-
引导加载自动配置类
- @SpringBootConfiguration
-
开发小技巧
-
LomBok
-
引入依赖
-
安装插件
-
常用注解@Data、@Slf4j、构造器、@ToString、哈希code与equal
-
-
maven依赖中有个 devtools
热部署 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
-
Spring Initailizr(项目初始化向导)
-
- 组件添加