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应用的开发效率。
