Spring Boot注解总结大全【案例详解,一眼秒懂】

news2024/12/24 16:05:20
  1. @SpringBootApplication
    • 功能:这是Spring Boot应用的核心注解,它是一个组合注解,实际上相当于同时使用了@Configuration@EnableAutoConfiguration@ComponentScan。它标记在主应用类上,用于开启Spring Boot的自动配置功能,扫描组件并加载应用程序上下文。
    • 示例
import org.springframework.boot.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringBootApplication.run(MyApplication.class, args);
    }
}
- 在这个示例中,`MyApplication`是主应用类,`@SpringBootApplication`注解告诉Spring Boot这是一个应用的入口点,并且要开启自动配置、扫描组件等操作。
  1. @RestController
    • 功能:是@Controller@ResponseBody的组合注解。@Controller表示这个类是一个Spring MVC控制器,用于处理Web请求;@ResponseBody表示方法的返回值直接作为HTTP响应体返回,而不是解析为视图名称,通常用于构建RESTful风格的Web服务。
    • 示例
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, World!";
    }
}
- 这里的`HelloController`类被`@RestController`注解标记,`sayHello`方法处理`/hello`路径的`GET`请求,并直接返回一个字符串作为响应内容。
  1. @GetMapping、@PostMapping、@PutMapping、@DeleteMapping等
    • 功能:这些注解是Spring MVC提供的用于简化HTTP请求方法映射的注解。@GetMapping用于处理GET请求,@PostMapping用于处理POST请求,@PutMapping用于处理PUT请求,@DeleteMapping用于处理DELETE请求。它们都可以指定请求路径作为参数。
    • 示例
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {
    @GetMapping("/users")
    public String getUsers() {
        // 返回用户列表的逻辑
        return "List of users";
    }

    @PostMapping("/users")
    public String addUser() {
        // 添加用户的逻辑
        return "User added";
    }

    @PutMapping("/users/{id}")
    public String updateUser() {
        // 更新用户的逻辑
        return "User updated";
    }

    @DeleteMapping("/users/{id}")
    public String deleteUser() {
        // 删除用户的逻辑
        return "User deleted";
    }
}
- 这个`UserController`类展示了如何使用这些注解来处理不同类型的HTTP请求,用于对用户资源进行CRUD(创建、读取、更新、删除)操作。
  1. @RequestMapping
    • 功能:这是一个比较通用的请求映射注解,可以用于处理多种HTTP请求方法。它可以指定请求路径、请求方法、请求头、请求参数等条件来匹配请求。@GetMapping等注解实际上是@RequestMapping的简化形式。
    • 示例
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/books")
public class BookController {
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public String getBookById() {
        // 根据ID获取图书的逻辑
        return "Book details";
    }
}
- 这里`BookController`类使用`@RequestMapping`注解指定了基础路径为`/books`,`getBookById`方法使用`@RequestMapping`再次指定了请求路径为`/{id}`并且请求方法为`GET`,用于获取指定ID的图书信息。
  1. @Autowired
    • 功能:用于自动装配Spring容器中的Bean。当Spring容器中有一个类型匹配的Bean时,它会自动将这个Bean注入到被@Autowired注解标记的字段、方法参数或构造函数参数中。
    • 示例
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
    // 其他业务逻辑
}
- 在这个`UserService`类中,通过构造函数注入了`UserRepository`。`@Autowired`注解告诉Spring容器自动找到`UserRepository`类型的Bean并注入到构造函数中。
  1. @Service、@Component、@Repository、@Controller(前面已提及部分功能)
    • 功能:这些注解都是用于标记Spring中的组件,使得Spring容器能够扫描并管理这些组件。
      • @Service:用于标记业务逻辑层的组件,表明这个类是一个服务类,主要用于处理业务逻辑。
      • @Component:是一个通用的组件注解,用于标记任何Spring管理的组件。如果一个类不符合@Service@Repository@Controller的语义,但又需要被Spring容器管理,就可以使用@Component
      • @Repository:用于标记数据访问层(如数据库访问)的组件,它还具有一些额外的功能,比如在数据访问出现异常时会自动转换为Spring的DataAccessException体系的异常。
    • 示例
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    // 业务逻辑实现
}
import org.springframework.stereotype.Component;

@Component
public class MyComponent {
    // 组件功能实现
}
import org.springframework.stereotype.Repository;

@Repository
public class UserRepositoryImpl implements UserRepository {
    // 数据访问逻辑实现
}
  1. @Configuration
    • 功能:用于标记一个类作为配置类,在这个类中可以定义Bean、导入其他配置类、设置属性源等。它相当于一个XML配置文件的Java版,用于配置Spring容器中的Bean和其他相关设置。
    • 示例
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}
- 在这个`AppConfig`配置类中,`@Bean`注解用于定义一个Bean,方法名(`myBean`)默认作为Bean的名称,方法的返回值就是Bean的实例。
  1. @Value
    • 功能:用于将外部配置文件(如application.propertiesapplication.yml)中的属性值注入到Spring管理的组件中。可以用于注入简单类型的值,如字符串、数字等。
    • 示例
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class MyComponent {
    @Value("${my.property}")
    private String myProperty;
    // 其他逻辑
}
- 假设在`application.properties`文件中有`my.property=Hello`,那么`myProperty`字段就会被注入值`"Hello"`。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2264804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

可编辑99PPT | 智能工厂整体规划方案及实施细部方案

荐言分享:智能工厂是利用物联网、大数据、人工智能等先进技术,实现生产过程自动化、智能化和柔性化的现代工厂。本整体规划方案旨在通过整合信息技术、自动化技术、人工智能技术和物联网技术,构建一个高效、灵活、绿色、可持续的生产环境&…

Allegro17.4创建异形焊盘速通

Allegro17.4创建异形焊盘速通 打开Padstack Editor 17.4,新建焊盘,以标贴焊盘为例: 该标贴焊盘是在底面,选择END LAYRE ,选择 Shape symbol Geometry,Shape symbol选择框右边有选择键,跳到Library Shape S…

多行为级联24|多行为推荐的超图增强级联图卷积网络

挂到arxiv上的,多行为级联超图加对比学习,超图是针对单个行为的,而不是针对多个行为的。参考的类似工作是CRGCN加MBSSL。这两篇我都做了论文阅读,(CRGCN正在路上,MBSSL是我的第一篇论文阅读帖子)推荐系统论…

利用.NET Upgrade Assitant对项目进行升级

本教程演示如何把WPF程序从 <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>升级到<TargetFramework>net8.0-windows</TargetFramework>. 下载并安装.NET Upgrade Assistant - Visual Studio Marketplace Supported .NET upgrades: .NET Frame…

Vue2四、 scoped样式冲突,data是一个函数,组件通信-父传子-子传父-非父子

组件通信 1. 父组件通过 props 将数据传递给子组件 2. 子组件利用 $emit 通知父组件修改更新 父--->子 子--->父

第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ

Q1、统计符合条件长度为3的子数组数目 1、题目描述 给你一个整数数组 nums &#xff0c;请你返回长度为 3 的子数组&#xff0c;满足第一个数和第三个数的和恰好为第二个数的一半。 子数组 指的是一个数组中连续 非空 的元素序列。 2、解题思路 我们需要在给定的数组 nums…

PSDK的编译与ROS包封装

本文档讲述在NIVIDIA开发板上使用大疆提供的Payload SDK获取无人机实时GPS信息的方法&#xff0c;以及基于Payload SDK发布ROS GPS话题信息的方法。 文章目录 0 实现目标1 Payload SDK1.1 PSDK 源码的编译1.2 PSDK 的使用 2 遥测数据的读取2.1 示例代码结构2.2 读取机载GPS信息…

铝电解电容使用寿命

铝电解电容寿命问题 铝电解电容为什么会失效&#xff1f;铝电解电容失效与那些因素有关&#xff1f;电解电容寿命如何计算&#xff1f; 1铝电解电容为什么会失效&#xff1f; 电容都是由两个导电板并排放到一起就构成了。正极是铝&#xff08;阳极箔&#xff09;&#xff0c;…

用Python PySide6 复刻了两软件UI 做下练习

图样 1 代码 1&#xff1a; # -*- coding: utf-8 -*-import sys from PySide6.QtCore import (QCoreApplication, QMetaObject, QRect, QDate) from PySide6.QtGui import QIcon, QPixmap, QColor from PySide6.QtWidgets import (QApplication, QDialog, QLineEdit, QPushBut…

安装MongoDB,环境配置

官网下载地址&#xff1a;MongoDB Shell Download | MongoDB 选择版本 安装 下载完成双击打开 点击mongodb-windows-x86_64-8.0.0-signed 选择安装地址 检查安装地址 安装成功 二.配置MongoDB数据库环境 1.找到安装好MongoDB的bin路径 复制bin路径 打开此电脑 -> 打开高级…

Spring学习(一)——Sping-XML

一、Spring的概述 (一)什么是Spring? Spring是针对bean对象的生命周期进行管理的轻量级容器。提供了功能强大IOC、AOP及Web MVC等功能。Spring框架主要由七部分组成&#xff1a;分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 S…

重温设计模式--职责链模式

文章目录 职责链模式的详细介绍C 代码示例C示例代码2 职责链模式的详细介绍 定义与概念 职责链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;它旨在将请求的发送者和多个接收者解耦&#xff0c;让多个对象都有机会处理请求&a…

easegen将教材批量生成可控ppt课件方案设计

之前客户提出过一个需求&#xff0c;就是希望可以将一本教材&#xff0c;快速的转换为教学ppt&#xff0c;虽然通过人工程序脚本的方式&#xff0c;已经实现了该功能&#xff0c;但是因为没有做到通用&#xff0c;每次都需要修改脚本&#xff0c;无法让客户自行完成所有流程&am…

高考志愿填报:如何制定合理的志愿梯度?

高考志愿填报中常见的避雷行为&#xff0c;深入分析了专业选择、招生政策了解、学校选择、备选方案准备以及防诈骗等方面的关键问题&#xff0c;并提出了针对性的建议与策略。旨在为考生和家长提供实用的指导&#xff0c;助力考生科学合理地填报高考志愿&#xff0c;避免陷入各…

如何查看vivado项目所使用的版本

在我们提供的各类教程中vivado使用的版本都不同&#xff0c;而使用不同版本的vivado打开项目时可能会产生一些其它错误&#xff0c;所有最好使用对应的vivado版本打开&#xff0c;本例主要演示如何查看项目所示使用的vivado版本。 如下图所示&#xff0c;为vivado2023.1版本创建…

ue5 pcg(程序内容生成)真的简单方便,就5个节点

总结&#xff1a; 前情提示 鼠标单击右键平移节点 1.编辑-》插件-》procedural->勾选两个插件 2.右键-》pcg图表-》拖拽进入场景 3.先看点point 右键-》调试(快捷键d)->右侧设置粒子数 3.1调整粒子数 可以在右侧输入框&#xff0c;使用加减乘除 4.1 表面采样器 …

光谱相机在农业的应用

一、作物生长监测1、营养状况评估 原理&#xff1a;不同的营养元素在植物体内的含量变化会导致植物叶片或其他组织的光谱反射率特性发生改变。例如&#xff0c;氮元素是植物叶绿素的重要组成部分&#xff0c;植物缺氮时&#xff0c;叶绿素含量下降&#xff0c;其在可见光波段&a…

基于Springboot的数字科技风险报告管理系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实…

14,攻防世界Web_php_unserialize

进入场景 看见代码&#xff0c;解析一下 这段PHP代码定义了一个名为Demo的类&#xff0c;并演示了如何通过URL参数进行反序列化和文件高亮显示的功能&#xff0c;同时也包含了一些安全措施以防止对象注入攻击。下面是对这段代码的逐行解释&#xff1a; 1.<php 开始PHP代码…

基于NodeMCU的物联网窗帘控制系统设计

最终效果 基于NodeMCU的物联网窗帘控制系统设计 项目介绍 该项目是“物联网实验室监测控制系统设计&#xff08;仿智能家居&#xff09;”项目中的“家电控制设计”中的“窗帘控制”子项目&#xff0c;最前者还包括“物联网设计”、“环境监测设计”、“门禁系统设计计”和“小…