今天开始学习我自己总结的 Java-学习路线 中的《SpringBoot》,小简从 0 开始学 Java 知识,并不定期更新所学笔记,期待一年后的蜕变吧!<有同样想法的小伙伴,可以联系我一起交流学习哦!>
- 🚩时间安排:预计10天更新完
- 🎯开始时间:06-20
- 🎉结束时间:06-xx
- 🍀总结:
一、快速入门
1.创建Maven项目
2.引入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.0</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3.创建主程序
创建 /java/com/jianjian/boot/MainApplication.java
/**
* 主程序类
*/
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}
@SpringBootApplication
注解相当于使用 @Configuration
、@EnableAutoConfiguration
和 @ComponentScan
及他们的默认属性
@Configuration
作为配置类替代xml配置文件@EnableAutoConfiguration
启用 SpringBoot 的自动配置机制@ComponentScan
自动扫描所有 Spring 组件
4.编写业务
创建 ../java/com/jianjian/boot/controller/HelloController.java
@RestController
public class HelloController {
@RequestMapping("/")
public String home(){
return "Hello, Spring Boot 2!";
}
}
5.运行项目
直接运行主程序 MainApplication
中的 main
方法,访问 http://127.0.0.1:8080/
,将会输出Hello, Spring Boot 2!
6.简化配置
创建 resources/application.properties 或者 resources/application.yml
server.port=8888
重新运行,浏览器输入http://localhost:8888
,将会输出Hello, Spring Boot 2!
更多配置项请参考:Common Application Properties
7.简化部署
Spring Boot 包括了一个 Maven 插件,它可以将项目打包成一个可执行 jar
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.0</version>
</plugin>
</plugins>
</build>
点击 IDEA 右侧的 Maven ⇒ 点击生命周期 ⇒ 点击 clean ⇒ 点击 package,target 目录下就会生成 jar 包,执行如下命令即可运行 jar 包
java -jar springBoot-learn-1.0-SNAPSHOT.jar
二、项目优化
1.Lombok
简化JavaBean开发
引入 Lombok,用注解代替构造器、getter/setter、toString()等代码,新版 IDEA 已集成 Lombok 插件,无需下载
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
@Data : 注在类上,提供类的get、set、equals、hashCode、toString等方法
@AllArgsConstructor :注在类上,提供类的全参构造
@NoArgsConstructor :注在类上,提供类的无参构造
@Setter :注在属性上,提供 set 方法
@Getter :注在属性上,提供 get 方法
@EqualsAndHashCode :注在类上,提供对应的 equals 和 hashCode 方法
@Log4j/@Slf4j :注在类上,提供对应的 Logger 对象,变量名为 log
//简化JavaBean开发
@NoArgsConstructor //无参构造
@AllArgsConstructor //有参构造
@Data
public class User {
private String name;
private Integer age;
}
//简化日志开发
@Slf4j
@RestController
public class HelloController {
@RequestMapping("/hello")
public String handle01(@RequestParam("name") String name){
log.info("请求进来了....");
return "Hello, Spring Boot 2!"+"你好:"+name;
}
}
2.Spring Initailizr
简化项目创建
Spring Initailizr是创建 Spring Boot 工程的脚手架,以后就创建 SpringBoot 项目就不用创建空白Maven项目,而是创建 Spring Initailizr 项目
在 IDEA 中,菜单栏 New -> Project -> Spring Initailizr,有如下优点:
- 创建时可以选择我们需要的开发场景
- 自动引入依赖
- 自动创建项目结构
- 自动编写好主程序类
- 自动创建测试文件和配置文件
3.yaml
优化配置文件
YAML 是一种较为人性化的数据序列化语言 ,语法比较简洁直观,特点是使用空格来表达层次结构,其最大优势在于数据结构方面的表达,所以 YAML 更多应用于编写配置文件,其文件一般以 .yml 为后缀。
yaml 非常适合用来做以数据为中心的配置文件。所以我们可以用 yaml 代替之前的 properties
基本语法
- key: value
- “
:
”后有空格
- “
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用 tab,只允许空格
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- ‘#’表示注释
- 字符串无需加引号,如果要加:
- 单引号表示字符串内容会被转义
- 双引号表示字符串内容不会被转义
数据类型
- 普通数据:单个的、不可再分的值。date、boolean、string、number、null
k: v
- 对象:键值对的集合。map、hash、set、object
行内写法: k: {k1:v1,k2:v2,k3:v3}
#或
k:
k1: v1
k2: v2
k3: v3
- 数组:一组按次序排列的值。array、list、queue
行内写法: k: [v1,v2,v3]
#或
k:
- v1
- v2
- v3
示例
@Data
public class Person {
private String userName;
private Boolean boss;
private Date birth;
private Integer age;
private Pet pet;
private String[] interests;
private List<String> animal;
private Map<String, Object> score;
private Set<Double> salarys;
private Map<String, List<Pet>> allPets;
}
@Data
public class Pet {
private String name;
private Double weight;
}
# yaml表示以上对象
person:
userName: zhangsan
boss: false
birth: 2019/12/12 20:12:33
age: 18
pet:
name: tomcat
weight: 23.4
interests: [篮球,游泳]
animal:
- jerry
- mario
score:
english:
first: 30
second: 40
third: 50
math: [131,140,148]
chinese: {first: 128,second: 136}
salarys: [3999,4999.98,5999.99]
allPets:
sick:
- {name: tom}
- {name: jerry,weight: 47}
health: [{name: mario,weight: 47}]
4.configuration-processor
配置提示
自定义的类和配置文件绑定一般没有提示。若要提示,添加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<build>
<plugins>
<plugin>
<configuration>
<excludes>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
三、自动配置原理
依赖管理特性
ctrl + shift + alt + U
:以图的方式显示项目中依赖之间的关系。
<!--依赖管理-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.0</version>
</parent>
<!--上面项目的父项目如下:-->
<!--它几乎声明了所有开发中常用的依赖的版本号,自动版本仲裁机制-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.7.0</version>
</parent>
开发时导入starter场景启动器
- 见到很多 spring-boot-starter-* : *代表某种场景
- 只要引入starter,这个场景的所有常规需要的依赖都自动引入
- 见到的 *-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器。
- 所有场景启动器最底层的依赖:spring-boot-starter
- 更多SpringBoot所有支持的场景
无需关注版本号,自动版本仲裁
- 引入依赖默认都可以不写版本
- 引入非版本仲裁的jar,要写版本号
可以修改默认版本号
- 查看 spring-boot-dependencies 里面依赖的版本
- 在当前项目里面重写配置,如下面的代码
<properties>
<mysql.version>5.1.43</mysql.version>
</properties>
自动配置特性
- 自动配置 Tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.7.0</version>
<scope>compile</scope>
</dependency>
- 自动配置SpringMVC
- 引入SpringMVC全套组件
- 自动配好SpringMVC常用组件(功能)
- 自动配好Web常见功能,如:字符编码问题
- 配置好了所有web开发的常见场景
public static void main(String[] args) {
//1、返回我们IOC容器
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
//2、查看容器里面的组件
String[] names = run.getBeanDefinitionNames();
for (String name : names) {
System.out.println(name);
}
}
参考
Sponsor❤️
您的支持是我不断前进的动力,如果您感觉本文对您有所帮助的话,可以考虑打赏一下本文,用以维持本博客的运营费用,拒绝白嫖,从你我做起!🥰🥰🥰
支付宝 | 微信 |
![]() |
![]() |