SpringBoot概述与入门
大约 5 分钟
SpringBoot概述与入门
什么是SpringBoot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
SpringBoot的核心理念
Spring Boot的核心理念是"约定优于配置"(Convention over Configuration),通过提供一系列默认配置和自动配置机制,让开发者能够快速启动和运行Spring应用程序。
SpringBoot的主要特性
1. 自动配置(Auto Configuration)
Spring Boot会根据类路径中的依赖自动配置应用程序:
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        // Spring Boot会自动配置Web服务器、数据源等
        SpringApplication.run(Application.class, args);
    }
}2. 起步依赖(Starter Dependencies)
Spring Boot提供了各种"starter"依赖,简化了Maven/Gradle配置:
<!-- Web开发起步依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 数据访问起步依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- 测试起步依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>3. 内嵌服务器(Embedded Servers)
Spring Boot内置了Tomcat、Jetty、Undertow等Web服务器:
@RestController
public class HelloController {
    
    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}4. 生产就绪特性(Production-ready Features)
Spring Boot Actuator提供了监控和管理功能:
# application.yml
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always5. 无代码生成和XML配置
Spring Boot尽量减少代码生成和XML配置,通过注解和Java配置实现:
@Configuration
public class AppConfig {
    
    @Bean
    public UserService userService() {
        return new UserServiceImpl();
    }
}SpringBoot的发展历程
版本演进
重要版本特性
- Spring Boot 1.x:奠定了自动配置和起步依赖的基础
- Spring Boot 2.x: - 基于Spring Framework 5.x
- 支持响应式编程
- 支持Java 9+
 
- Spring Boot 3.x: - 基于Spring Framework 6.x
- 支持Java 17+
- 支持Jakarta EE 9+
 
SpringBoot项目结构
标准目录结构
src
├── main
│   ├── java
│   │   └── com
│   │       └── example
│   │           └── demo
│   │               ├── DemoApplication.java
│   │               ├── controller
│   │               ├── service
│   │               ├── repository
│   │               └── model
│   └── resources
│       ├── application.yml
│       ├── static
│       └── templates
└── test
    └── java
        └── com
            └── example
                └── demo核心文件说明
- DemoApplication.java:应用程序入口类
- application.yml:配置文件
- static/:静态资源目录
- templates/:模板文件目录
SpringBoot核心注解
@SpringBootApplication
这是Spring Boot最重要的注解,它是一个组合注解:
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
// 等价于以下三个注解的组合:
// @SpringBootConfiguration
// @EnableAutoConfiguration
// @ComponentScan其他重要注解
// 标识配置类
@Configuration
// 启用组件扫描
@ComponentScan
// 启用自动配置
@EnableAutoConfiguration
// 标识REST控制器
@RestController
// 标识服务层组件
@Service
// 标识数据访问层组件
@Repository
// 标识配置属性
@ConfigurationProperties(prefix = "app")SpringBoot配置文件
application.yml
# 服务器配置
server:
  port: 8080
  servlet:
    context-path: /api
# 数据源配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/testdb
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver
  
  # JPA配置
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
    
  # Redis配置
  redis:
    host: localhost
    port: 6379
# 自定义配置
app:
  name: My Application
  version: 1.0.0配置文件加载顺序
SpringBoot启动过程
启动流程
启动类示例
@SpringBootApplication
public class Application {
    
    public static void main(String[] args) {
        // 启动Spring Boot应用
        SpringApplication app = new SpringApplication(Application.class);
        app.setBannerMode(Banner.Mode.OFF); // 关闭Banner
        app.run(args);
    }
}SpringBoot开发环境搭建
Maven配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
    <modelVersion>4.0.0</modelVersion>
    
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.0</version>
        <relativePath/>
    </parent>
    
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    
    <properties>
        <java.version>17</java.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>Gradle配置
plugins {
    id 'org.springframework.boot' version '3.1.0'
    id 'io.spring.dependency-management' version '1.1.0'
    id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
    useJUnitPlatform()
}第一个SpringBoot应用
创建简单的Web应用
@SpringBootApplication
public class HelloApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }
}
@RestController
class HelloController {
    
    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
    
    @GetMapping("/user/{name}")
    public Map<String, String> getUser(@PathVariable String name) {
        Map<String, String> response = new HashMap<>();
        response.put("message", "Hello, " + name + "!");
        response.put("timestamp", new Date().toString());
        return response;
    }
}运行应用
# Maven方式运行
./mvnw spring-boot:run
# Gradle方式运行
./gradlew bootRun
# 打包后运行
./mvnw clean package
java -jar target/demo-0.0.1-SNAPSHOT.jarSpringBoot生态系统
官方Starter
第三方集成
通过以上内容,我们可以全面了解Spring Boot的核心概念、特性和使用方法。Spring Boot通过简化配置和提供开箱即用的功能,大大提高了Spring应用的开发效率。
