Bootstrap

Spring Boot 入门教程

目录

 1. 理解Spring Boot

1.简化配置     

2. 起步依赖(Starter Dependencies)

3. 自动化配置

4. 外部化配置

5. 基于注解 

6. 外部化配置    

7. 整合生态系统   

2. 环境设置和配置

1. JDK安装

2. Maven的安装

3. IntelliJ IDEA Ultimate旗舰版

3.Spring Boot基础

1. Spring Boot 项目结构

2. 主要注解示例

3. 配置文件示例

4. 服务层和依赖注入示例

5. 数据访问示例


 1. 理解Spring Boot


1.简化配置     

示例 1:Web 应用程序

通过 @SpringBootApplication 注解启动一个简单的 Web 应用程序:

@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}

这个注解包含了 @Configuration@ComponentScan@EnableAutoConfiguration,从而简化了配置。

2. 起步依赖(Starter Dependencies)

示例 2:Web 应用程序

使用 Spring Boot Starter Web,快速创建一个基本的 RESTful API:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

这个 Starter 依赖包含了 Spring MVC、Tomcat 等必需的库,可快速搭建一个 Web 应用。

3. 自动化配置

示例 3:数据库访问

添加 Spring Boot Starter Data JPA 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

只需简单地配置数据源信息,Spring Boot 就会自动创建数据源和配置 JPA 等相关内容,无需手动配置大量的数据源和 EntityManager。

4. 外部化配置

示例 4:配置文件

application.propertiesapplication.yml 文件中配置数据库连接信息:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=username
spring.datasource.password=password

Spring Boot 会自动读取这些配置信息,并将其应用于相关的组件。

5. 基于注解 

示例 5:RESTful Controller

使用 @RestController 注解创建一个简单的 REST 控制器:

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}

这个简单的注解就能创建一个能够响应 HTTP GET 请求的控制器方法。

6. 外部化配置    

示例 6:监控和管理

Spring Boot 提供了诸如 /actuator/health/actuator/info 等端点,通过这些端点可以轻松地监控应用的健康状况和信息。

7. 整合生态系统   

示例 7:Spring Security

通过引入 Spring Boot Starter Security,轻松实现身份验证和授权,比如:

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    // 省略其他配置
}

2. 环境设置和配置


前提:需要准备的环境

Spring boot 2.x需要JDK 1.8.0_201(以上版本)Spring boot3.x需要JDK17
Apache Maven 3.6.0(以上版本)
IntelliJ IDEA Ultimate旗舰版


1. JDK安装

  • Jdk的下载与安装

通过官网下载https://www.oracle.com/java/technologies/downloads/
按步骤安装即可

  • 环境变量配置

1. 打开高级系统设置
右击主机,选择“属性”选项可以快速打开

2. 打开环境变量

 3. 新建系统变量

4. 新建JAVA_HOME变量,变量值为JDK安装路径

 5. 在系统变量中找到Path变量进行编辑

6. 将刚才新建的JAVA_HOME变量加入其中 

点击右边的新建即可

7. 利用CMD命令验证环境变量是否配置成功 java -version 

快捷键:windows + R 然后输入 cmd 命令

  • 环境变量配置说明

为什么需要配置环境变量?为了在命令行窗口下编译和运行Java程序。
我们所写的Java程序,都是保存在一个后缀名为.java的文件当中的,这个文件称之为源文件。源文
件并不能被执行,它需要首先被编译成二进制字节码文件,也就是后缀名为.class的文件。那么怎
样把源文件编译成二进制字节码文件呢?这时候就需要用到JDK当中提供的编译程序来完成这个任
务。编译程序是一个后缀为.exe的可执行文件,名字叫做javac,它存在于JDK安装路径下的bin文
件夹中。
我们的源文件文件有可能会被保存到磁盘上任何一个文件夹中。当我们在源文件所在的文件夹中
去调用javac编译程序,系统会发现根本就找不到这个它。
所以我们要设置在任何目录下都调用到该指定文件,为了在在任何文件夹下都调用到某一指定目
录下的文件,我们就应该配置环境变量(指定目录路径),让系统在你所配置的路径下去自己查找这
些文件然后运行
为什么需要新建JAVA_HOME变量?
方便引用
归一原则
当你JDK路径被迫改变的时候, 你仅需更改JAVA_HOME的变量值即可, 否则,你就要更改任何用绝对
路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩
溃!
第三方软件会引用约定好的JAVA_HOME变量
JDK1.5之前的JDK版本还需要CLASSPATH的配置

2. Maven的安装

  • Maven的下载与安装

注意:maven的安装需要依赖jdk的安装,所以必须先安装完成jdk且配置好jdk环境变量后再进行maven的安装!!
通过官网下载https://maven.apache.org/download.cgi
按步骤安装即可

  • Maven环境变量配置

Maven环境变量配置步骤与JDK环境变量配置类似
官网下载的文件,注意路径要到无bin后缀的文件夹

添加环境变量

验证环境变量配置成功 mvn -v

  • Maven中央仓库配置(重要)

配置maven中央仓库地址(参考https://blog.csdn.net/qq_47128897/article/details/131148421),中央
仓库是 Maven 的默认远程仓库,它包含了大量的开源 Java 项目和依赖库,我们可以通过 Maven 客户端
从中央仓库中下载需要的构建产物和依赖库,由于Maven默认的中央仓库地址较难访问,因此我们需要
配置国内镜像地址(镜像站,是指把现有的网站放在另外一个地方的服务器上的一个网站)提高下载速率,这里我们使用阿里云镜像。
打开你的maven配置文件找到 conf 文件夹


将下述代码复制到mirrors里,然后保存

<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/central/</url>
<mirrorOf>central</mirrorOf>
</mirror>

3. IntelliJ IDEA Ultimate旗舰版

为了方便Spring boot的开发,我们需要旗舰版的IDEA
通过官网下载https://www.jetbrains.com/idea/download/
IDEA旗舰版激活方式
学生认证(https://www.jetbrains.com/shop/eform/students)
配置IDEA(以IDEA2023为例)


1. 对项目进行全局配置

2. 对Maven进行配置

完成到这里,Spring boot的环境配置完成了!

3.Spring Boot基础

1. Spring Boot 项目结构

my-spring-boot-app/
  └── src/
      ├── main/
      │   ├── java/
      │   │   └── com/
      │   │       └── example/
      │   │           └── myapp/
      │   │               ├── MySpringBootApplication.java  // Spring Boot 应用入口
      │   │               ├── controllers/                  // 控制器层
      │   │               │   └── MyController.java         // REST 控制器
      │   │               ├── services/                     // 服务层
      │   │               │   └── MyService.java            // 服务类
      │   │               └── repositories/                 // 数据访问层
      │   │                   └── MyRepository.java         // 数据访问接口
      │   └── resources/
      │       └── application.properties (或 application.yml)  // 应用程序配置文件
      └── test/
          └── java/
              └── com/
                  └── example/
                      └── myapp/
                          └── MySpringBootApplicationTests.java  // 测试类
 

2. 主要注解示例

@SpringBootApplication

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MySpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}

@RestController

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}

3. 配置文件示例

application.properties

# 设置端口号
server.port=8080

# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root_password

4. 服务层和依赖注入示例

服务(Service)

import org.springframework.stereotype.Service;

@Service
public class MyService {
    public String getMessage() {
        return "Hello from MyService!";
    }
}

依赖注入(Dependency Injection)

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {
    private final MyService myService;

    @Autowired
    public MyController(MyService myService) {
        this.myService = myService;
    }

    @GetMapping("/message")
    public String getMessage() {
        return myService.getMessage();
    }
}

5. 数据访问示例

Spring Data Repository

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface MyRepository extends JpaRepository<MyEntity, Long> {
    // 可以自定义查询方法
}

b. 使用 Repository

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {
    private final MyRepository myRepository;

    @Autowired
    public MyController(MyRepository myRepository) {
        this.myRepository = myRepository;
    }

    @GetMapping("/entities")
    public List<MyEntity> getAllEntities() {
        return myRepository.findAll();
    }
}

参考:ChatGPT

;