春风十里不如你——掌握Spring Boot的常用关键注解

news2024/11/26 3:38:06

引言

在Java的世界里,Spring Boot以其简化的配置和开箱即用的特性,成为了构建现代微服务和企业级应用的首选框架。Spring Boot的注解是这一切的核心。在本文中,我们将深入探讨最常用的Spring Boot注解,帮助你轻松驾驭Spring Boot的强大力量。

注解简介

注解(Annotations)是Java 5引入的一个重要特性,它提供了一种在代码中添加元数据的方法。在Spring Boot中,注解用于各种目的,如配置、数据管理、服务注入等。

核心注解

在Spring Boot中,有一些注解是你几乎每个项目都会用到的。理解这些注解对于有效地使用Spring Boot至关重要。

@SpringBootApplication

@SpringBootApplication是一个方便的注解,它封装了@Configuration@EnableAutoConfiguration,和@ComponentScan注解。这意味着它自动配置Spring应用上下文、扫描路径中的组件,并设置配置类。

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

@Autowired

@Autowired注解可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。通过@Autowired的使用来消除setter/getter方法。

@Service
public class MyService {
    @Autowired
    private MyRepository repository;
}

@Service

@Service注解是用在类上的,标识一个Bean是服务层组件。Spring将自动检测这些类进行依赖注入。

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

@Repository

@Repository注解用于标记数据访问组件,即DAO组件。它也用于将数据库操作产生的异常翻译为Spring的数据访问异常。

@Repository
public interface MyRepository extends JpaRepository<MyEntity, Long> {
    // ...
}

@Controller

@Controller注解标记一个类作为Spring MVC Controller处理器。

@Controller
public class MyController {
    // ...
}

@RestController

@RestController是一个组合注解,它结合了@Controller@ResponseBody的功能,这意味着数据不会被渲染为视图,而是直接写入HTTP响应体中。

@RestController
public class MyRestController {
    // ...
}

@RequestMapping

@RequestMapping注解用于定义请求的URL模式和HTTP方法。

@RestController
@RequestMapping("/api")
public class MyRestController {
    @RequestMapping(value = "/users", method = RequestMethod.GET)
    public List<User> getUsers() {
        // ...
    }
}

@GetMapping, @PostMapping, @PutMapping, @DeleteMapping

这些注解是@RequestMapping的专化版本,用于处理HTTP的GET, POST, PUT, DELETE方法。

@RestController
@RequestMapping("/api")
public class MyRestController {
    @GetMapping("/users")
    public List<User> getUsers() {
        // ...
    }
}

数据访问相关注解

Spring Boot提供了一套丰富的注解来简化数据库操作。

@Entity

@Entity注解标记一个类为实体类,它将映射到数据库的一个表。

@Entity
public class User {
    @Id
    private Long id;
    // ...
}

@Id

@Id注解声明了实体类的主键。

@Entity
public class User {
    @Id
    private Long id;
    // ...
}

@Column

@Column注解描述了数据库表中实体类属性与表的列的映射关系。

@Entity
public class User {
    @Id
    private Long id;

    @Column(name = "username")
    private String username;
    // ...
}

@Transactional

@Transactional注解用于声明一个事务边界。默认情况下,它会应用到所有的public方法上。

@Service
public class UserService {
    @Transactional
    public void updateUser(User user) {
        // ...
    }
}

配置相关注解

Spring Boot的自动配置是它的一大特色,但有时候我们需要自定义配置。

@Value

@Value用于将一个SpEL表达式结果或者属性值注入到Bean中。

@Service
public class MyService {
    @Value("${my.value}")
    private String myValue;
    // ...
}

@Configuration

@Configuration注解表明一个类声明了一个或多个@Bean方法,并且可能会被Spring容器用来生成Bean定义和服务请求。

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

@Bean

@Bean注解告诉Spring这是一个需要被实例化为Bean的方法。

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

@Profile

@Profile注解指定某些Bean只能在特定的profile被激活时创建。

@Configuration
@Profile("dev")
public class DevConfig {
    // ...
}

安全相关注解

Spring Security是Spring Boot的一个重要组成部分,它也提供了一系列注解。

@EnableWebSecurity

@EnableWebSecurity注解用于启用Spring Security的Web安全支持。

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    // ...
}

@Secured

@Secured注解用于指定某个方法只能被拥有特定权限的用户访问。

@Service
public class SecureService {
    @Secured("ROLE_ADMIN")
    public void adminOnlyMethod() {
        // ...
    }
}

测试相关注解

Spring Boot提供了全面的测试支持,以下是一些测试时常用的注解。

@SpringBootTest

@SpringBootTest注解用于提供一个Spring Boot应用上下文的测试环境。

@SpringBootTest
public class MyApplicationTests {
    // ...
}

@DataJpaTest

@DataJpaTest提供了针对JPA应用的测试功能。

@DataJpaTest
public class MyRepositoryTests {
    // ...
}

@WebMvcTest

@WebMvcTest用于测试MVC应用,通常与@MockBean一起使用。

@WebMvcTest(MyController.class)
public class MyControllerTest {
    // ...
}

结语

掌握这些Spring Boot注解将帮助你更好地利用Spring Boot的特性,提升你的开发效率。记住,实践是学习的捷径,尝试在你的项目中使用这些注解,并观察它们如何简化你的代码和流程。

👉 💐🌸 CSDN请关注 "一叶飘零_sweeeet", 一起学习,一起进步! 🌸💐
 

 

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

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

相关文章

AMEYA360分析兆易创新GD32A490系列车规级MCU

兆易创新GigaDevice今日宣布&#xff0c;正式推出全新GD32A490系列高性能车规级MCU&#xff0c;以高主频、大容量、高集成和高可靠等优势特性紧贴汽车电子开发需求&#xff0c;适用于车窗、雨刷、智能车锁、电动座椅等BCM车身控制系统&#xff0c;以及仪表盘、娱乐影音、中控导…

2023.12.4 GIT的概念和组成

目录 目录 1.git的介绍 2.git的历史 开发者&#xff1a;Linus Torvalds Linux的创始人 3.git和svn的对比 svn:集中式管理 git:分布式管理 4.git管理的组成结构 5.取消git文件夹追踪 1.git的介绍 git是项目版本管理工具,能自动的将多个版本进行管理存储,类似于快照,多个…

视界臻色彩 轻巧薄未来 《2023年中国OLED电视发展白皮书》发布

随着中国经济迈入新周期&#xff0c;彩电行业也进入存量竞争阶段。在此背景下&#xff0c;主流品牌围绕新产品、新技术、新应用等方面积极发力&#xff0c;特别是在高端彩电市场的争夺中&#xff0c;伴随着三星OLED的入局开始变得愈发激烈。我国“十三五”规划中明确指出&#…

洛雪音乐助手用不了了?使用六音自定义音源即可解决

用前必读 因为导入的接口源码是直接很明显得可以看到接口地址的&#xff08;跟作者协商处理办法中&#xff09; 为了防止被恶意滥用&#xff0c;所以我加入了接口请求频率限制&#xff0c;3秒内超过5次请求就会封禁IP 所以请务必注意&#xff0c;使用批量下载可能会下着下着就…

掌汇云 | 全场景数据追踪,多维了解用户偏好,提高运营效率

掌汇云拥有黄金“三件套”&#xff1a;掌头条、汇互动、云品牌。群硕借助这些功能套件&#xff0c;面向细分领域如&#xff1a;会展&#xff0c;食品饮料、医药以及工业等&#xff0c;定制综合性信息服务平台&#xff0c;提供资讯、商机、企业人脉、上下游资源、活动等高质量服…

如何在Linux上部署1Panel运维管理面板并远程访问内网Web端管理界面

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器&#xff0c;包括主机监控、…

【LeetCode:1038. 从二叉搜索树到更大和树 | BST+DFS+中序遍历】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

我也不想说啊,可这东西行政用能保命啊!

行政人姐妹在哪里啊&#xff01;在处理工作报告&#xff0c;行政报告等文章的时候&#xff0c;毫无头绪&#xff0c;速度还慢&#xff0c;容易被领导批评。 最近挖到了个抄好用的AI智能写作工具 用它写报告&#xff0c;写总结、写会议记录&#xff0c;写方案等等......写啥都…

软件开发、管理、运维、实施、验收、交付、安全检查等文档支撑

软件开发涉及到哪些文档&#xff1a; 全文档获取&#xff1a;点我获取 可行性分析报告&#xff1a;在项目开始前&#xff0c;需要编写可行性分析报告&#xff0c;评估项目的可行性、技术需求、成本预算等因素&#xff0c;为决策提供依据。项目开发计划&#xff1a;明确项目的…

Java毕业设计—vue+SpringBoot人事管理OA系统前后端分离

项目介绍 项目背景 人力资源管理是企业运营中必不可少的一环&#xff0c;它关系到企业的前途与发展。尤其对于中小微企业来说&#xff0c;对企业的发展有着举足轻重的作用。随着近年来&#xff0c;政府对创业项目的大力扶持&#xff0c;我国创业型企业蓬勃发展。据统计&#…

由于找不到xinput1_3.dll,无法继续执行代码的多种解决方法指南,xinput1_3.dll文件修复

当玩家或用户在启动某些游戏和应用程序时&#xff0c;可能会遭遇到一个系统错误提示&#xff1a;“由于找不到xinput1_3.dll,无法继续执行代码l”。这种情况通常指出系统中DirectX组件存在问题。以下我们将介绍几种常用的解决方法&#xff0c;并提供详细的操作步骤。 一.找不到…

【webpack】初始化

webpack 旧项目的问题下一代构建工具 Vite 主角 &#xff1a;webpack安装webpack1&#xff0c;mode的选项2&#xff0c;使用source map 精准定位错误行数3&#xff0c;使用watch mode(观察模式)&#xff0c;自动运行4&#xff0c;使用webpack-dev-server工具&#xff0c;自动刷…

03_阿里云_配置OSS环境变量

关于aliyunOSS文件上传的系统变量配置 问题引出 在黑马程序员2023新版JavaWeb开发教程教程中&#xff0c;P148Day11-04. 案例-文件上传-阿里云OSS-准备到P150Day11-06. 案例-文件上传-阿里云OSS-集成阿里云给的参考代码已经更新了&#xff0c;需要配置阿里云的用户变量&#…

JavaScript实战:制作一个待办事项列表应用

JavaScript实战&#xff1a;制作一个待办事项列表应用 引言 在本教程中&#xff0c;我们将一步步创建一个简单的待办事项列表应用&#xff0c;这不仅会帮助你学习基本的JavaScript编程概念&#xff0c;还会教会你如何处理事件以及操作DOM。这个项目是面向初学者的&#xff0c…

NFTScan Labs:我们为什么要推出 L2 网络 Mint Blockchain?

发展背景 NFT&#xff08;非同质化代币&#xff09;是一种储存在区块链上的加密数据单位&#xff0c;它可以代表身份、合同、权益、声誉、社交关系等独一无二的数字资产。与比特币等加密货币不同&#xff0c;NFT 资产不可互换&#xff0c;每一枚 NFT 都是独一无二的链上资产。N…

力扣题:字符的统计-12.6

力扣题-12.6 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;696. 计数二进制子串 解题思想&#xff1a;先统计连续的0和连续的1的个数&#xff0c;然后进行相加即可&#xff08;想不到一点&#xff09; class Solution(object):def countBinaryS…

怎么用电源芯片测试系统测试电源管理芯片的性能?

电源芯片用于电源转换和管理&#xff0c;其性能直接影响着电源管理芯片的工作效率和可靠性&#xff0c;影响电子设备的质量和性能。因此&#xff0c;性能测试是电源芯片测试的重要步骤&#xff0c;用电源芯片测试系统测试其性能&#xff0c;可以确保测试数据及测试结果的准确性…

m1编译xgboost的jar报错

1、编译 cd jvm-package包&#xff0c;然后进行编译mvn install -P libxgboost,java -DskipTests 2、报错信息&#xff1a; 3、解决方法 A、在jvm-packages包下找到xgboost4j中找到pom.xml&#xff0c;如图&#xff1a; B、修改python的额目录或者脚本&#xff1a; C、继续执…

普华永道:国有企业要动态布局和管理供应商资源池

近日&#xff0c;普华永道发布《动态布局和管理供应商资源池&#xff0c;助力国企数字化供应链建设》研究文章中建议&#xff1a;国有企业需要将采购寻源作为供应链管理的起始点&#xff0c;管理供应商资源池&#xff0c;实施供应链数字化转型的发展战略&#xff0c;不仅能解决…

数据分析基础之《matplotlib(4)—柱状图》

一、柱状图绘制 1、柱状图要素 有类别 2、需求&#xff1a;对比每部电影的票房收入 电影数据如下图所示&#xff1a; 3、matplotlib.pyplot.bar(x, height, width0.8, bottomNone, *, aligncenter, dataNone, **kwargs) 说明&#xff1a; x&#xff1a;有几个类别 height&am…