PancrasL的博客

SpringBoot简介与入门

2021-04-08

img

1. SpringBoot快速入门

1.1 Quickstart

  • pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.3.4.RELEASE</version>
</parent>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
  • 主程序
1
2
3
4
5
6
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
}
  • 业务逻辑
1
2
3
4
5
6
7
8
@RestController
public class HelloController {

@RequestMapping("/hello")
public String handle01(){
return "Hello World!";
}
}
  • 默认包结构
    • 主程序同包或主程序子包下的类
    • 使用 @SpringBootApplication(scanBasePackages="indi.pancras") 指定
    • 使用 @ComponentScan("indi.pancras") 指定扫面路径

1.2 配置绑定

  • Car.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {

private String brand;
private Integer price;

@Override
public String toString() {
return "Car{" +
"brand='" + brand + '\'' +
", price=" + 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;
}
}
  • application.properties
1
2
mycar.brand=BYD
mycar.price=10000

2. SpringBoot的两大机制

2.1 依赖管理

  • 父项目做依赖管理
1
2
3
4
5
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
</parent>
  • 开发场景导入starter场景启动器
1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.2 自动配置

  • 自动配好Tomcat
    • 引入Tomcat依赖
  • 自动配好SpringMVC
  • 自动配好web常见功能:如字符编码问题
  • 默认的包结构
  • 各种配置拥有默认值
  • 按需加载所有自动配置项

3. SpringBoot功能

3.1 组件添加

  • @Configuration
1
2
3
4
5
6
7
8
9
10
11
@Configuration
public class MyConfig {
@Bean
public User user01() {
return new User("张三", 19, pet01());
}
@Bean
public Pet pet01() {
return new Pet("Tom");
}
}
  • Full 模式和 Lite 模式

    • 组件无依赖:采用Lite模式,启动快
    • 组件有依赖:采用Full模式,多了一些判断步骤
  • @Import

    • 向容器中加入组件,默认是全类名
  • @Conditional

    • 条件装配
  • @ImportResource

    • 导入xml中的bean

3.2 配置绑定

将properties中的配置绑定到配置类中

  • @ConfigurationProperties+@Component

    • @Component
      @ConfigurationProperties(prefix = "mycar")
      public class Car {
          private String brand;
          private Integer price;
      }
      
      //mycar.brand=BYD
      //mycar.price=100000
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20



      + @EnableConfigurationProperties

      + ```java
      @Configuration
      @EnableConfigurationProperties(Car.class)// 开启Car的属性配置
      public class MyConfig {
      }

      @ConfigurationProperties(prefix = "car")
      @Data
      @ToString
      @AllArgsConstructor
      @NoArgsConstructor
      public class Car {
      private String brand;
      private Integer price;
      }

3.3 最佳实践

  • 引入场景依赖
  • 修改配置项
  • 替换部分组件

4. Web开发

4.1 应用配置项

  • 静态资源的访问
1
2
3
4
5
6
7
8
spring:
# 修改静态资源的请求路径
mvc:
static-path-pattern: /res/**
# 修改静态资源的物理位置
web:
resources:
static-locations: [ classpath:/images ]