本文详细介绍了Spring Boot框架的入门知识,包括框架简介、环境搭建、第一个Spring Boot应用的创建、常用注解和配置、数据访问以及项目打包和部署。Spring Boot框架资料涵盖了从基础概念到高级功能的全面讲解,帮助开发者快速上手并充分利用Spring Boot的强大功能。
Spring Boot框架资料入门详解 Spring Boot简介Spring Boot是什么
Spring Boot 是由Pivotal团队提供的一个基于Spring框架的开源项目。它的主要目标是简化Spring应用的初始搭建以及开发过程,使开发人员能够快速搭建独立的Spring应用。Spring Boot旨在提供“约定优于配置”的开发模式,减少开发人员在配置方面投入的时间,并且简化了Spring应用的配置。
Spring Boot的优点
- 快速启动:Spring Boot简化了创建独立的、生产级别的Spring应用的方式,它可以让你快速构建应用,无需配置XML或使用复杂性。
- 自动配置:Spring Boot提供了自动配置功能,能够根据应用所依赖的jar包,自动配置应用环境。
- 嵌入式Web服务器:Spring Boot自带嵌入式的Tomcat、Jetty或Undertow,开发者不需要安装和管理这些服务器,简化了部署过程。
- 健康检查和监控:内置了许多健康检查和监控功能,帮助开发者实时了解应用的运行状态。
- 数据库支持:内置了多种数据库的支持,包括JPA、MyBatis、Redis等。
- 日志配置简化:Spring Boot提供了一种简单的方式来配置日志框架(如Logback),并且集成了Spring Boot的Actuator,方便监控和管理应用。
Spring Boot与Spring的区别
- Spring:Spring是一个全面的企业级应用开发框架,提供了依赖注入(DI)、AOP、事务管理等功能,需要手动配置大量XML或注解来完成功能装配。
- Spring Boot:基于Spring框架,旨在简化配置,提供默认配置,让开发人员可以专注于业务逻辑,而不是配置细节。
安装JDK
- 下载JDK:访问Oracle官方网站或者OpenJDK官网下载适合自己操作系统的JDK版本。
- 安装JDK:运行下载的安装程序,按照向导完成安装。
- 配置环境变量:安装完成后,配置环境变量,编辑系统的环境变量,在系统变量中添加JAVA_HOME和Path变量。设置JAVA_HOME指向JDK的安装目录,Path变量添加%JAVA_HOME%\bin。
# 设置JAVA_HOME
set JAVA_HOME=C:\Program Files\Java\jdk-11.0.1
# 添加Path到环境变量
set PATH=%JAVA_HOME%\bin;%PATH%
安装IDE(推荐使用IntelliJ IDEA和Spring Tool Suite)
IntelliJ IDEA
- 下载并安装IntelliJ IDEA:访问官网下载并安装最新版本的IntelliJ IDEA,选择合适的安装路径。
- 创建项目:安装完成后,打开IDEA,选择创建新的项目,选择Spring Initializr。
- 配置项目:选择Spring Boot的版本,选择要集成的技术,如Web,JPA等。
Spring Tool Suite
- 下载并安装Spring Tool Suite:访问官网下载并安装最新版本的Spring Tool Suite,选择适合的操作系统。
- 创建项目:安装完成后,打开Spring Tool Suite,选择File -> New -> Spring Starter Project。
- 配置项目:选择Spring Boot的版本,选择要集成的技术,如Web,JPA等。
下载并安装Spring Boot Starter
- 下载Spring Boot Starter:Spring Boot Starter是Spring Boot应用的启动依赖,已包含所有的依赖,下载地址:https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-starter/。
- 添加到项目中:在IDE中,右键项目,选择Add Framework Support,选择Spring Boot,然后选择添加Spring Boot Starter到项目中。示例如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
第一个Spring Boot应用
创建Spring Boot项目
- 创建项目结构:在IDE中创建一个新的Spring Boot项目。
- 编写简单的Hello World程序:在主类中编写一个简单的Hello World应用。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloWorldApplication.class, args);
}
}
@RestController
class HelloController {
@GetMapping("/")
public String hello() {
return "Hello, World!";
}
}
运行并调试应用
- 运行应用:在IDE中,右键主类,选择Run 'HelloWorldApplication'运行应用。
- 调试应用:设置断点,右键主类,选择Debug 'HelloWorldApplication'调试应用。
@SpringBootApplication注解详解
@SpringBootApplication
是Spring Boot的核心注解,它是一个组合注解,包含了@Configuration
、@EnableAutoConfiguration
、@ComponentScan
三个注解的功能。
@Configuration
:声明当前类是一个配置类。@EnableAutoConfiguration
:启用自动配置。@ComponentScan
:启用组件扫描,扫描指定包下的所有组件。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloWorldApplication.class, args);
}
}
@RestController和@RequestMapping注解使用
@RestController
:表示该类中的方法将以JSON或XML格式输出,用于构建RESTful风格的Web服务。@RequestMapping
:映射HTTP请求到指定的方法,可以指定请求的URL、请求类型等。
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
application.properties和application.yml配置文件介绍
application.properties
和application.yml
是Spring Boot的配置文件,用于定义应用的各种属性。
# application.properties
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
# application.yml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: root
Spring Boot数据访问
使用Spring Boot访问MySQL数据库
- 添加依赖:在pom.xml文件中添加MySQL依赖。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
- 配置数据源:在application.properties或application.yml中配置数据源。
# application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
# application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: root
- 定义实体类:定义一个实体类,用于映射数据库中的表。
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// getters and setters
}
- 定义Repository接口:定义一个Repository接口,用于操作数据库中的表。
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
- 定义Service类:定义一个Service类,用于封装业务逻辑。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> findAll() {
return userRepository.findAll();
}
public User save(User user) {
return userRepository.save(user);
}
}
- 定义Controller类:定义一个Controller类,用于处理HTTP请求。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public List<User> getAllUsers() {
return userService.findAll();
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.save(user);
}
}
配置JPA和Hibernate进行数据库操作
- 添加依赖:在pom.xml文件中添加JPA和Hibernate依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
- 启用JPA:在application.properties或application.yml中配置JPA。
# application.properties
spring.jpa.hibernate.ddl-auto=update
# application.yml
spring:
jpa:
hibernate:
ddl-auto: update
实现简单的CRUD操作
- 创建数据:通过Controller中的
save
方法创建数据。
@PostMapping
public User createUser(@RequestBody User user) {
return userService.save(user);
}
- 查询数据:通过Controller中的
getAllUsers
方法查询所有数据。
@GetMapping
public List<User> getAllUsers() {
return userService.findAll();
}
- 更新数据:通过Controller中的
save
方法更新数据。
@PutMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody User user) {
return userService.save(user);
}
- 删除数据:通过Controller中的
deleteById
方法删除数据。
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
userService.deleteById(id);
}
Spring Boot项目打包和部署
打包Spring Boot应用为可执行的JAR文件
- 打包项目:在IDE中,选择Build -> Package,打包项目为可执行的JAR文件。
mvn package
- 运行JAR文件:运行生成的JAR文件。
java -jar target/myapp.jar
使用Spring Boot Actuator监控应用
- 添加依赖:在pom.xml文件中添加Spring Boot Actuator依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
- 配置Actuator:在application.properties或application.yml中配置Actuator。
# application.properties
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
# application.yml
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
- 访问Actuator端点:启动应用后,访问
http://localhost:8080/actuator
查看Actuator提供的各种端点。
部署Spring Boot应用到Tomcat或直接运行
- 部署到Tomcat:将打包好的JAR文件部署到Tomcat服务器,启动Tomcat服务器。
java -jar target/myapp.jar --server.port=8081
- 直接运行:在IDE中,选择Run -> Run Configuration,配置运行参数,启动应用。
- 参考资料
- Spring Boot官方文档: https://spring.io/projects/spring-boot
- Spring Boot官方GitHub: https://github.com/spring-projects/spring-boot
- Spring Boot配置参考: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-started-first-application
- 慕课网Spring Boot课程: https://www.imooc.com/course/list?searchType=course&keyword=SpringBoot
- Spring Boot Actuator官方文档: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/actuate/autoconfigure/ActuatorAutoConfiguration.html
- Tomcat官方文档: https://tomcat.apache.org/tomcat-9.0-doc/index.html