本文章根据B站up主尚硅谷视频:https://www.bilibili.com/video/BV19K4y1L7MT
以及其文档https://www.yuque.com/atguigu/springboot/rmxq85和官方文档https://spring.io/projects/spring-boot搬运总结。
一、Spring与SpringBoot
1.Spring能做什么
(1)微服务
(2)响应式编程
(3)分布式云开发
(4)Web开发
(5)无服务开发:函数式开发,节省服务器资源
(6)事件驱动服务
…
2.SpringBoot
将上述的功能进行整合,简化配置等流程。
(1)Servlet Stack:最原生的技术栈。
(2)Reactive Stack:异步数据流,响应式应用,尽可能占用少量的资源。
3.适配器
JAVA8实现接口的默认实现。
二、为什么用SpringBoot
1.SpringBoot的优点
- 创建独立Spring应用
- 内嵌web服务器
- 自动starter依赖,简化构建配置
- 自动配置Spring以及第三方功能
- 提供生产级别的监控、健康检查及外部化配置
- 无代码生成、无需编写XML
2.SpringBoot的缺点
- 人称版本帝,迭代快,需要时刻关注变化
- 封装太深,内部原理复杂,不容易精通
三、SpringBoot时代背景
1.微服务
- 微服务是一种架构风格
- 一个应用拆分为一组小型服务
- 每个服务运行在自己的进程内,也就是可独立部署和升级
- 服务之间使用轻量级HTTP交互
- 服务围绕业务功能拆分
- 可以由全自动部署机制独立部署
- 去中心化,服务自治。服务可以使用不同的语言、不同的存储技术
2.分布式
(1)分布式的困难
- 远程调用
- 服务发现
- 负载均衡
- 服务容错
- 配置管理
- 服务监控
- 链路追踪
- 日志管理
- 任务调度
(2)分布式的解决
四、如何开启项目
五、项目配置
在一个文件中设置配置
六、创建可执行的jar
包
直接在JVE
环境中运行
七、了解自动化配置原理
关键: pom.xml
文件的配置,设置配置后,在项目中可直接使,声明了开发中常用的依赖版本号
八、底层注解
1.引入其它版本的驱动
<properties>
<mysql.version>5.1.43</mysql.version>
</properties>
2.示例代码
package com.atguigu.boot;
import org.springframework.boot.SpringApplication; // SpringApplication.run(主类.class, args)
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
// 主程序类
// 注解--@SpringBootApplication: 这是一个SpringBoot应用
@SpringBootApplication
public class MainApp {
public static void main(String[] args){
// 1. 返回IOC容器,包含容器中的所有组件
ConfigurableApplicationContext run = SpringApplication.run(MainApp.class, args);
String[] names = run.getBeanDefinitionNames();
// 2. 查看容器中的所有组件
for(String item: names) {
System.out.println(item);
}
// 3. 从容器中获得组件
Pet tom01 = run.getBean("tom", Pet.class);
Pet tom02 = run.getBean("tom", Pet.class);
System.out.println("组件:"+(tom01==tom02));
}
}
1.@Configuration
2.@Import
3.@Conditional
条件装配:满足Conditional指定的条件,则进行组件注入
4.@ImportResource
导入配置文件(config.xml
)
5.@ConfigurationProperties
(1)配置属性绑定
(2)prefix
参数:通过prefix
参数引入配置参数:
/**
* 只有在容器中的组件,才会拥有SpringBoot提供的强大功能
*/
@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {
private String brand;
private Integer price;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
@Override
public String toString() {
return "Car{" +
"brand='" + brand + '\'' +
", price=" + price +
'}';
}
(3)开启属性配置功能
@Configuration
@EnableConfigurationProperties(Car.class)
//1、开启Car配置绑定功能
//2、把这个Car这个组件自动注册到容器中
public class MyConfig {
}
(4)实例–配置MySQL
-
在
application.properties
文件中添加配置mysql.account=12345 mysql.password=123
-
创建类文件
MySQL.java
package com.atguigu.boot.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component // 把组件加入容器中。
@ConfigurationProperties(prefix = "mysql") // 与application.properties文件对应
public class MySQL {
private String Account;
private String Password;
public String getAccount() {
return Account;
}
public String getPassword(){
return Password;
}
public void setAccount(String account) {
this.Account = account;
}
public void setPassword(String password) {
this.Password = password;
}
}