什么是SpringBoot?,它有什么好处以及Spring Boot 常用注解详解。

06-01 1419阅读

Spring Boot 概述

什么是Spring Boot?

Spring Boot是Spring框架的一个子项目,旨在简化基于Spring的应用开发过程。它通过"约定优于配置"的原则,提供了一系列自动配置和快速开发的特性,使开发者能够快速搭建独立运行的、生产级的Spring应用程序。

Spring Boot的核心特点

  1. 自动配置:根据项目依赖自动配置Spring应用

  2. 起步依赖:简化依赖管理,提供功能化的依赖组

  3. 内嵌服务器:内置Tomcat、Jetty或Undertow,无需部署WAR文件

  4. 命令行界面:支持使用Groovy脚本快速开发

  5. Actuator:提供生产就绪功能,如健康检查、指标收集等

Spring Boot的主要好处

1. 简化配置

  • 作用:大幅减少XML配置和样板代码

  • 示例:自动配置数据源、事务管理等

  • 好处:开发者可以更专注于业务逻辑而非配置

    2. 快速开发

    • 作用:提供快速启动模板和开发工具

    • 示例:Spring Initializr在线生成项目结构

    • 好处:几分钟内即可搭建可运行的项目框架

      3. 微服务友好

      • 作用:天然支持微服务架构

      • 示例:轻松集成Spring Cloud组件

      • 好处:简化分布式系统开发

        什么是SpringBoot?,它有什么好处以及Spring Boot 常用注解详解。
        (图片来源网络,侵删)

        4. 生产就绪

        • 作用:内置监控和管理端点

        • 示例:/actuator/health端点提供健康检查

          什么是SpringBoot?,它有什么好处以及Spring Boot 常用注解详解。
          (图片来源网络,侵删)
        • 好处:方便运维和监控应用状态

          5. 丰富的生态系统

          • 作用:无缝集成Spring生态系统和其他流行技术

            什么是SpringBoot?,它有什么好处以及Spring Boot 常用注解详解。
            (图片来源网络,侵删)
          • 示例:Spring Data、Spring Security等

          • 好处:开发者可以利用成熟的解决方案

            Spring Boot的主要作用

            1. Web应用开发:快速构建RESTful API或传统Web应用

            2. 批处理应用:简化批处理作业开发

            3. 微服务架构:作为微服务的基础框架

            4. 企业应用集成:简化与其他系统的集成

            5. 原型开发:快速验证想法和概念

            Spring Boot与传统Spring应用的对比

            特性Spring Boot传统Spring
            配置方式自动配置+约定优于配置大量XML/Java配置
            依赖管理起步依赖(starter)简化手动管理各个依赖
            部署方式内嵌服务器,可执行JAR需要外部容器部署WAR
            启动速度更快相对较慢
            开发效率更高相对较低

            典型Spring Boot应用结构

            my-application/

            ├── src/

            │   ├── main/

            │   │   ├── java/

            │   │   │   └── com/example/

            │   │   │       ├── Application.java       # 主启动类

            │   │   │       ├── controller/            # 控制器

            │   │   │       ├── service/               # 服务层

            │   │   │       ├── repository/            # 数据访问

            │   │   │       └── model/                 # 实体类

            │   │   └── resources/

            │   │       ├── static/                    # 静态资源

            │   │       ├── templates/                 # 模板文件

            │   │       ├── application.properties     # 配置文件

            │   │       └── application.yml           # 配置文件(YAML格式)

            │   └── test/                             # 测试代码

            ├── pom.xml                               # Maven配置

            └── target/                               # 构建输出


            1. 核心注解

            @SpringBootApplication

            • 用途:主启动类注解,组合了@Configuration、@EnableAutoConfiguration和@ComponentScan

            • 用法:标注在主类上

            • 位置:应用主类

            • 示例:

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

              2. Controller相关注解    (非常重要噢)

              @RestController

              • 用途:组合了@Controller和@ResponseBody,用于RESTful控制器

              • 用法:标注在控制器类上 

              • 位置:控制器类

              • 示例:

                @RestController
                @RequestMapping("/api")
                public class UserController {
                    // ...
                }

                @RequestMapping

                • 用途:映射HTTP请求到方法

                • 用法:类或方法级别(既可以放在类上面也可以放在方法上面)

                • 位置:控制器类或方法

                • 示例:

                  @RequestMapping(value = "/users", method = RequestMethod.GET)

                  @GetMapping/@PostMapping/@PutMapping/@DeleteMapping

                  • 用途:特定HTTP方法的简化@RequestMapping

                  • 用法:方法级别

                  • 位置:控制器方法

                  • 示例:

                    @GetMapping("/{id}")
                    public User getUser(@PathVariable Long id) {
                        // ...
                    }

                    @PathVariable

                    • 用途:获取URL路径中的变量

                    • 用法:方法参数

                    • 位置:控制器方法参数

                    • 示例:

                      @GetMapping("/users/{id}")
                      public User getUser(@PathVariable Long id) {
                          // ...
                      }

                      @RequestParam

                      • 用途:获取请求参数

                      • 用法:方法参数

                      • 位置:控制器方法参数

                      • 示例:

                        @GetMapping("/users")
                        public List getUsers(@RequestParam(required = false) String name) {
                            // ...
                        }

                        3. 依赖注入相关

                        @Autowired

                        • 用途:自动装配依赖

                        • 用法:字段、构造方法或setter方法

                        • 位置:需要注入的类成员

                        • 示例:

                          @Service
                          public class UserService {
                              @Autowired
                              private UserRepository userRepository;
                          }

                          @Component

                          • 用途:通用组件注解

                          • 用法:类级别

                          • 位置:组件类

                          • 示例:

                            @Component
                            public class MyComponent {
                                // ...
                            }

                            @Service

                            • 用途:标注服务层组件

                            • 用法:类级别

                            • 位置:服务类

                            • 示例:

                              @Service
                              public class UserService {
                                  // ...
                              }

                              @Repository

                              • 用途:标注数据访问组件

                              • 用法:类级别

                              • 位置:DAO类

                              • 示例:

                                @Repository
                                public interface UserRepository extends JpaRepository {
                                    // ...
                                }

                                4. 配置相关

                                @Configuration

                                • 用途:定义配置类

                                • 用法:类级别

                                • 位置:配置类

                                • 示例:

                                  @Configuration
                                  public class AppConfig {
                                      @Bean
                                      public MyBean myBean() {
                                          return new MyBean();
                                      }
                                  }

                                  @Bean

                                  • 用途:声明一个方法返回的对象作为Spring Bean

                                  • 用法:方法级别

                                  • 位置:配置类中的方法

                                  • 示例:

                                    @Bean
                                    public DataSource dataSource() {
                                        // 创建并返回DataSource
                                    }

                                    @Value

                                    • 用途:注入属性值

                                    • 用法:字段或方法参数

                                    • 位置:需要注入值的类成员

                                    • 示例:

                                      @Value("${app.name}")
                                      private String appName;

                                      5. 数据相关

                                      @Entity

                                      • 用途:标注JPA实体类

                                      • 用法:类级别

                                      • 位置:实体类

                                      • 示例:

                                        @Entity
                                        @Table(name = "users")
                                        public class User {
                                            @Id
                                            @GeneratedValue(strategy = GenerationType.IDENTITY)
                                            private Long id;
                                            // ...
                                        }

                                        @Transactional

                                        • 用途:声明事务

                                        • 用法:类或方法级别

                                        • 位置:服务类或方法

                                        • 示例:

                                          @Service
                                          @Transactional
                                          public class UserService {
                                              // ...
                                          }

                                          6. 测试相关

                                          @SpringBootTest

                                          • 用途:Spring Boot集成测试

                                          • 用法:类级别

                                          • 位置:测试类

                                          • 示例:

                                            @SpringBootTest
                                            class MyApplicationTests {
                                                @Test
                                                void contextLoads() {
                                                }
                                            }

                                            7. AOP相关

                                            @Aspect

                                            • 用途:定义切面类

                                            • 用法:类级别

                                            • 位置:切面类

                                            • 示例:

                                              @Aspect
                                              @Component
                                              public class LoggingAspect {
                                                  // ...
                                              }

                                              @Before/@After/@Around

                                              • 用途:定义通知类型

                                              • 用法:方法级别

                                              • 位置:切面类中的方法

                                              • 示例:

                                                @Before("execution(* com.example.service.*.*(..))")
                                                public void beforeAdvice(JoinPoint joinPoint) {
                                                    // ...
                                                }

                                                以上是Spring Boot开发中最常用的注解,掌握这些注解可以满足大部分开发需求。

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码