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

引言

在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 {@Autowiredprivate 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 {@Idprivate Long id;// ...
}

@Id

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

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

@Column

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

@Entity
public class User {@Idprivate Long id;@Column(name = "username")private String username;// ...
}

@Transactional

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

@Service
public class UserService {@Transactionalpublic 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 {@Beanpublic MyBean myBean() {return new MyBean();}
}

@Bean

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

@Configuration
public class AppConfig {@Beanpublic 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.hqwc.cn/news/255732.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu宝塔面板本地部署Emlog个人博客网站并远程访问【内网穿透】

文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总结 前言 博客作为使…

微前端介绍

目录 微前端概念 微前端特性 场景演示 微前端方案 iframe 方案 qiankun 方案 micro-app 方案 EMP 方案 无界微前端 方案 无界方案 成本低 速度快 原生隔离 功能强大 总结 前言&#xff1a;微前端已经是一个非常成熟的领域了&#xff0c;但开发者不管采用哪个现…

【技术分享】利用双网口透传网关实现三菱FX3U PLC远程程序上下载监控

准备工作 一台可联网操作的电脑一台双网口的远程透传网关及博达远程透传配置工具网线两条&#xff0c;用于实现网络连接及连接PLC一台三菱 FX3U PLC及其编程软件一张4G卡或WIFI天线实现通讯(使用4G联网则插入4G SIM卡&#xff0c;WIFI联网则将WIFI天线插入USB口&#xff09; …

如何通过内网穿透实现无公网IP也能远程访问内网的宝塔面板

文章目录 一、使用官网一键安装命令安装宝塔二、简单配置宝塔&#xff0c;内网穿透三、使用固定公网地址访问宝塔 宝塔面板作为建站运维工具&#xff0c;适合新手&#xff0c;简单好用。当我们在家里/公司搭建了宝塔&#xff0c;没有公网IP&#xff0c;但是想要在外也可以访问内…

YOLOv5结合BiFPN,如何替换YOLOv5的Neck实现更强的检测能力?

一、BiFPN是什么&#xff1f; 1、什么是BiFPN BiFPN是一种基于特征金字塔网络&#xff08;FPN&#xff09;和双向特征金字塔网络&#xff08;BiFPN&#xff09;的对象检测神经网络结构&#xff0c;它被用于提高目标检测的准确度和速度。在目标检测领域&#xff0c;FPN用于将不同…

9. 使用Pthreads实现线程池(一)

背景 多线程的一个典型应用场景就是服务器的并发处理,如下图所示,多名用户向服务器发出数据操作的请求。为了提高并发性,我们可以在每收到一个用户请求时就创建一个线程处理相关操作。这种操作在请求数量较少时没有什么问题,但在请求数量很多时你会发现线程的创建和销毁所占…

单月创作15个10w+作品,内容创作迎来新浪潮

据11月16日腾讯发布的Q3财报显示&#xff0c;本季度视频号总播放量同比增长超过50%&#xff0c;原创内容播放量增长强劲&#xff0c;视频号作为微信生态内最具增长潜力的产品之一&#xff0c;已然成为腾讯营收新动力。 为帮助大家更好地洞察视频号平台的内容趋势及创作风向&…

安装you-get(mac)

1、首先要有python环境 2、更新pip python -m pip install --upgrade pip 3、安装you-get pip install you-get;

使用ApexSQLLog工具恢复数据库

目录 前言 一、ApexSQLLog是什么&#xff1f; 二、使用步骤 1.连接你要恢复的数据库 2.选择你要恢复的时间点的数据 3.恢复指定操作的数据 4.恢复指定的表 5.输出结果方式 6.输出结果方式 7.生成还原的sql语句 总结 前言 我们在操作数据库的时候可能误操作把数据修…

QT作业1

自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面 头文件代码&#xff1a; #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include <QIcon> #include <QLabel> //标签类 #include <QMovie> //动图类 #include <…

Python 日志(略讲)

日志操作 日志输出&#xff1a; # 输出日志信息 logging.debug("调试级别日志") logging.info("信息级别日志") logging.warning("警告级别日志") logging.error("错误级别日志") logging.critical("严重级别日志")级别设置…

12_企业架构之Tomcat部署使用

Tomcat 学习目标和内容 1、能够描述Tomcat的使用场景 2、能够简单描述Tomcat的工作原理 3、能够实现部署安装Tomcat 4、能够实现配置Tomcat的service服务和自启动 5、能够实现Tomcat的Host的配置 6、能够实现Nginx反向代理Tomcat 7、能够实现Nginx负载均衡到Tomcat 一、Tomcat介…