SpringBoot学习涵盖从Spring Boot的基本介绍到开发环境搭建,包括Spring Boot的优势、应用场景和基础配置等内容,帮助开发者快速上手并高效开发Spring Boot应用。文章还详细介绍了如何创建首个Spring Boot应用,并深入讲解了Spring Boot的常用功能和实战案例,确保读者能够全面掌握SpringBoot学习。
SpringBoot简介Spring Boot是Spring框架的一个模块,主要目的是简化Spring应用的初始搭建以及开发过程。Spring Boot旨在提供一个快速上手的开发环境,使得开发者可以快速构建独立的,生产级别的基于Spring的应用程序。它通过约定大于配置的方式,减少了开发者需要写的一堆配置,简化了开发流程,简化了编码、配置、测试、部署等流程,使开发更加高效。
JAVA_HOME
指向JDK安装目录。%JAVA_HOME%\bin
添加到Path
环境变量。Spring Boot项目的结构如下:
src └── main ├── java │ └── com │ └── example │ └── springboot │ ├── Application.java │ └── controller │ └── HelloController.java └── resources ├── application.properties └── static └── index.html
Application.java
:主程序入口。controller
:控制器包,用于定义控制器。application.properties
:Spring Boot配置文件。static
:存放静态资源文件,如HTML、CSS、JavaScript等。Spring Boot支持多种配置文件,包括application.properties
和application.yml
。
# 应用基本信息 spring.application.name=myapp # 数据库配置 spring.datasource.url=jdbc:mysql://localhost:3306/dbname spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver # 日志配置 logging.file=/path/to/logfile
spring: application: name: myapp datasource: url: jdbc:mysql://localhost:3306/dbname username: root password: password driver-class-name: com.mysql.jdbc.Driver logging: file: /path/to/logfile
Spring Boot通过@EnableAutoConfiguration
注解来实现自动配置。该注解会扫描类路径下的jar包,根据jar包中的元数据来设置配置属性。每个自动配置类通常都包含一个SpringBootCondition
注解,用于决定在什么条件下加载配置。
例如,Spring Boot会根据类路径中的JDBC驱动类自动配置数据源:
@Configuration @ConditionalOnClass(name = { "org.springframework.jdbc.core.JdbcTemplate" }) public class JdbcConfiguration { @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSource() { // 配置数据源 } }创建首个SpringBoot应用
Application.java
中添加@SpringBootApplication
注解,并定义主程序入口。package com.example.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
使用@Controller
注解定义一个控制器。
package com.example.springboot.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/hello") public String hello() { return "Hello, Spring Boot!"; } }
Application.java
中的主程序。http://localhost:8080/hello
,响应内容为Hello, Spring Boot!
。@RestController
注解定义控制器类,并使用@GetMapping
、@PostMapping
等注解定义接口。@RestController public class UserController { @GetMapping("/users") public List<User> getUsers() { // 返回用户列表 } @PostMapping("/users") public User createUser(@RequestBody User user) { // 创建用户 } }
UserRepository
接口并继承JpaRepository
接口。import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long> { }
application.properties
中配置数据源。spring.datasource.url=jdbc:mysql://localhost:3306/dbname spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver
@Entity
注解定义实体类。import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String name; private String email; // Getter and Setter }
JpaRepository
接口。import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long> { }
application.properties
中配置数据源。spring.datasource.url=jdbc:mysql://localhost:3306/dbname spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver
@Mapper
注解。import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User getUserById(Long id); }
Spring Boot默认支持静态资源处理,资源路径位于src/main/resources/static
目录下。
application.properties
中配置静态资源路径。spring.mvc.static-path-pattern=/static/**
http://localhost:8080/static/index.html
。假设我们正在开发一个图书管理系统,包含图书的增删改查等操作。
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; private String author; private String isbn; // Getter and Setter }
import org.springframework.data.jpa.repository.JpaRepository; public interface BookRepository extends JpaRepository<Book, Long> { }
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/books") public class BookController { @Autowired private BookRepository bookRepository; @GetMapping public List<Book> getBooks() { return bookRepository.findAll(); } @PostMapping public Book addBook(@RequestBody Book book) { return bookRepository.save(book); } @PutMapping("/{id}") public Book updateBook(@PathVariable Long id, @RequestBody Book book) { book.setId(id); return bookRepository.save(book); } @DeleteMapping("/{id}") public void deleteBook(@PathVariable Long id) { bookRepository.deleteById(id); } }
mvn clean package
java -jar target/book-manager.jar
application.properties
中配置日志级别。logging.level.root=INFO logging.file.name=/path/to/logfile
<!-- pom.xml --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
http://localhost:8080/actuator
。