目录
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.properties
或 application.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