1.什么是springboot
Spring Boot 是一个开源的 Java 框架,基于 Spring 框架构建,旨在简化 Spring 应用程序的开发过程。它通过约定优于配置的原则、自动配置以及开箱即用的功能来加速应用程序的开发。
2.springboot项目怎么创建
2.1 使用 Spring Initializr:
Spring Initializr 是一个在线工具,可以快速生成 Spring Boot 项目骨架。访问 Spring Initializr,选择项目的构建工具(Maven 或 Gradle)、Spring Boot 版本、项目元数据(如 Group、Artifact、Name 等),然后选择所需的依赖项。点击“Generate”按钮下载生成的项目压缩包。
2.2 使用 IDE:
在 IntelliJ IDEA 中,你也可以直接使用 Spring Initializr 创建 Spring Boot 项
-
IntelliJ IDEA
- 选择
File > New > Project...
- 选择
Spring Initializr
,点击Next
- 配置项目的属性,选择所需的依赖,点击
Finish
- 选择
3.手动创建
如果你更喜欢手动创建项目,可以通过创建 Maven项目,并在 pom.xml
文件中添加 Spring Boot 相关的依赖。以下是一个 Maven 项目的示例:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<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>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.springboot的优点
-
自动配置: Spring Boot 提供了大量的自动配置选项,简化了开发配置工作。它根据项目的依赖和环境自动配置应用程序。
-
开箱即用: Spring Boot 提供了一整套开箱即用的功能,包括内嵌的 Web 服务器(如 Tomcat、Jetty 或 Undertow)、监控、管理端点等。
-
简化配置: 通过
application.properties
或application.yml
配置文件,简化了应用程序的配置。 -
快速启动: 使用 Spring Boot 的内置服务器,可以快速启动应用程序,减少了开发和测试过程中的复杂性。
-
生产就绪: Spring Boot 提供了生产环境所需的监控和管理功能,例如 Actuator,可以用来检查应用程序的健康状态和性能指标。
5.springboot与spring框架的关系
-
Spring 框架 是一个广泛使用的企业级框架,用于创建 Java 应用程序。它提供了多种功能,包括依赖注入、事务管理、AOP 等。
-
Spring Boot 是 Spring 框架的一个扩展,旨在简化 Spring 应用程序的开发过程。它提供了自动配置、开箱即用的功能和生产就绪的特性,以加速开发和部署。
以下是一个简单的 Spring Boot 应用程序示例:
DemoApplication.java
(Spring Boot 主类):
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
UserController.java
(Controller 示例):
package com.example.demo;
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 UserController {
@GetMapping("/greet")
public String greet() {
return "Hello, Spring Boot!";
}
}
application.properties
(配置文件示例)
server.port=8081
在这个示例中,Spring Boot 主类 DemoApplication
启动了 Spring Boot 应用程序。UserController
提供了一个简单的 REST API 端点 /api/greet
,它返回一个字符串 "Hello, Spring Boot!"。application.properties
配置文件设置了服务器端口为 8081。
使用 Spring Boot,你可以快速创建和启动一个功能齐全的应用程序,简化了配置和部署过程。
6.全局处理Controller层异常
相关注解:
@ControllerAdvice
:注解定义全局异常处理类@ExceptionHandler
:注解声明异常处理方法@ControllerAdvice @ResponseBody public class GlobalExceptionHandler { /** * 请求参数异常处理 */ @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity<?> handleMethodArgumentNotValidException(MethodArgumentNotValidException ex, HttpServletRequest request) { ...... } }
7.@SpringBootApplicantion注解
这个注解是 Spring Boot 项目的基石,创建 SpringBoot 项目之后会默认在主类加上。
@SpringBootApplication
public class SpringSecurityJwtGuideApplication {
public static void main(java.lang.String[] args) {
SpringApplication.run(SpringSecurityJwtGuideApplication.class, args);
}
}
我们可以把 @SpringBootApplication
看作是 @Configuration
、@EnableAutoConfiguration
、@ComponentScan
注解的集合。
package org.springframework.boot.autoconfigure;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
......
}
package org.springframework.boot;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
}
这三个注解的作用分别是:
@EnableAutoConfiguration
:启用 SpringBoot 的自动配置机制@ComponentScan
:扫描被@Component
(@Repository
,@Service
,@Controller
)注解的 bean,注解默认会扫描该类所在的包下所有的类。@Configuration
:允许在 Spring 上下文中注册额外的 bean 或导入其他配置类