SpringBoot常用注解及其使用示例

Spring Boot是一个用于快速构建Java应用程序的框架,它简化了Spring应用程序的创建和部署过程。

Spring Boot提供了很多注解,用于简化开发过程,提高开发效率。本文将介绍几个Spring Boot常用注解的使用案例,包括@Controller、@RequestMapping、@Autowired、@Service、@Repository、@Configuration等。

        1、@Controller注解用于标记一个类为Spring MVC的Controller,处理HTTP请求和响应。下面是一个简单的@Controller注解的使用案例:

@Controller
public class HelloWorldController {
    
    @RequestMapping("/")
    @ResponseBody
    public String helloWorld() {
        return "Hello, World!";
    }
}

在上面的例子中,@Controller注解标记了HelloWorldController类为一个Controller,@RequestMapping注解指定了处理请求的URL路径为"/",@ResponseBody注解将方法的返回值直接作为响应的内容返回。

        2、@RequestMapping注解用于映射HTTP请求的URL路径到具体的处理方法。下面是一个使用@RequestMapping注解的案例:

@Controller
@RequestMapping("/users")
public class UserController {
    
    @RequestMapping(method = RequestMethod.GET)
    @ResponseBody
    public List<User> getUsers() {
        // 查询用户列表并返回
    }
    
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    @ResponseBody
    public User getUserById(@PathVariable Long id) {
        // 根据id查询用户并返回
    }
    
    @RequestMapping(method = RequestMethod.POST)
    @ResponseBody
    public User createUser(@RequestBody User user) {
        // 创建新用户并返回
    }
    
    @RequestMapping(value = "/{id}", method = RequestMethod.PUT)
    @ResponseBody
    public User updateUserById(@PathVariable Long id, @RequestBody User user) {
        // 根据id更新用户信息并返回
    }
    
    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
    @ResponseBody
    public void deleteUserById(@PathVariable Long id) {
        // 根据id删除用户
    }
}

在上面的例子中,@RequestMapping注解标记了UserController类的URL路径为"/users",通过不同的请求方法(GET、POST、PUT、DELETE)和URL路径的变量(id)来映射不同的处理方法。

        3、@Autowired注解用于自动装配Bean,简化了依赖注入的过程。下面是一个使用@Autowired注解的案例:

@Service
public class UserService {
    
    @Autowired
    private UserRepository userRepository;
    
    public List<User> getUsers() {
        return userRepository.findAll();
    }
    
    public User getUserById(Long id) {
        return userRepository.findById(id).orElse(null);
    }
    
    public User createUser(User user) {
        return userRepository.save(user);
    }
    
    public User updateUserById(Long id, User user) {
        User existingUser = userRepository.findById(id).orElse(null);
        if (existingUser != null) {
            // 更新用户信息
            existingUser.setName(user.getName());
            existingUser.setAge(user.getAge());
            return userRepository.save(existingUser);
        }
        return null;
    }
    
    public void deleteUserById(Long id) {
        userRepository.deleteById(id);
    }
}

在上面的例子中,@Autowired注解将UserRepository注入到UserService类中,省去了手动创建依赖对象的步骤。在UserService类的其他方法中,可以直接使用userRepository对象进行数据操作。

        4、@Service注解用于标记一个类为Spring的服务类,类似于@Service注解,但更加具体。下面是一个使用@Service注解的案例:

@Service
public class UserService {
    
    // 省略其他方法...
    
    public boolean isUserNameExists(String username) {
        // 判断用户名是否存在
    }
    
    public boolean isEmailExists(String email) {
        // 判断邮箱是否存在
    }
}

在上面的例子中,@Service注解标记了UserService类为一个服务类,其中包含了判断用户名和邮箱是否存在的方法。

        5、@Repository注解用于标记一个类为Spring的数据访问类,类似于@Service注解,但更加具体。下面是一个使用@Repository注解的案例:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    
    // 根据用户名查询用户
    User findByUsername(String username);
    
    // 根据邮箱查询用户
    User findByEmail(String email);
}

在上面的例子中,@Repository注解标记了UserRepository接口为一个数据访问类,通过继承JpaRepository接口,可以直接调用其提供的方法进行数据操作。另外,UserRepository接口还定义了根据用户名和邮箱查询用户的方法。

        6、@Configuration注解用于标记一个类为Spring的配置类,用来取代xml配置文件。下面是一个使用@Configuration注解的案例:

@Configuration
public class AppConfig {
    
    @Bean
    public UserService userService() {
        return new UserService();
    }
    
    @Bean
    public UserRepository userRepository() {
        return new UserRepository();
    }
}

在上面的例子中,@Configuration注解标记了AppConfig类为一个配置类,其中通过@Bean注解定义了两个Bean对象,分别是UserService和UserRepository。这样,在其他类中可以通过@Autowired注解进行依赖注入。

总结:

本文介绍了几个Spring Boot常用注解的使用案例,包括@Controller、@RequestMapping、@Autowired、@Service、@Repository、@Configuration等。通过使用这些注解,可以简化开发过程,提高开发效率。希望本文对你学习和使用Spring Boot框架有所帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

rancher踩坑日志:prometheus访问kubelet 10250端口提示鉴权失败

该原因是因为kubectl禁止了非授权用户访问10250端口来获取node的数据。 解决思路&#xff1a; 添加prometheus访问kubelet时带上证书进行验证匹配 --> 由于我的prometheus是rancher安装的&#xff0c;不知道要怎么修改所以研究了一会没研究明白就放弃了。设置prometheus访问…

《深入Linux内核架构》第2章 进程管理和调度 (2)

目录 2.4 进程管理相关的系统调用 2.4.1 进程复制 2.4.2 内核线程 2.4.3 启动新程序 2.4.4 退出进程 本专栏文章将有70篇左右&#xff0c;欢迎关注&#xff0c;订阅后续文章。 2.4 进程管理相关的系统调用 2.4.1 进程复制 1. _do_fork函数 fork vfork clone都最终调用_…

YOLOv5实战记录06 Gradio搭建Web GUI

个人打卡&#xff0c;慎看。 指路大佬&#xff1a;【手把手带你实战YOLOv5-入门篇】YOLOv5 Gradio搭建Web GUI_哔哩哔哩_bilibili 先放一张效果图&#xff1a; 零、虚拟环境激活 之前up说要激活环境时&#xff0c;我没当回事儿&#xff0c;今天突然想&#xff0c;激活环境然后…

设计模式之创建型模式---建造者模式

文章目录 建造者模式概述经典的建造者模式建造者模式的变种总结 建造者模式概述 建造者模式是一种广泛使用的设计模式&#xff0c;在三方开源库和各种SDK中经常见到。建造者设计模式在四人帮的经典著作《设计模式&#xff1a;可复用面向对象软件基础》中被提及&#xff0c;它的…

Flink常见面试问题(附答案)

目录 基础篇1. 什么是Apache Flink&#xff1f;2. Flink与Hadoop的区别是什么&#xff1f;3. Flink中的事件时间&#xff08;Event Time&#xff09;和处理时间&#xff08;Processing Time&#xff09;有什么区别&#xff1f;4. Flink的容错机制是如何实现的&#xff1f;5. 什…

配置交换机 SSH 管理和端口安全

实验1:配置交换机基本安全和 SSH管理 1、实验目的 通过本实验可以掌握&#xff1a; 交换机基本安全配置。SSH 的工作原理和 SSH服务端和客户端的配置。 2、实验拓扑 交换机基本安全和 SSH管理实验拓扑如图所示。 3、实验步骤 &#xff08;1&#xff09;配置交换机S1 Swit…

力扣HOT100 - 238. 除自身以外数组的乘积

解题思路&#xff1a; 当前位置的结果就是它左部分的乘积再乘以它右部分的乘积。因此需要进行两次遍历&#xff0c;第一次遍历用于求左部分的乘积&#xff0c;第二次遍历在求右部分的乘积的同时&#xff0c;再将最后的计算结果一起求出来。 class Solution {public int[] prod…

ClickHouse 介绍

前言 一个通用系统意味着更广泛的适用性&#xff0c;但通用的另一种解释是平庸&#xff0c;因为它无法在所有场景内都做到极致。 ClickHouse 在没有像三驾马车这样的指导性论文的背景下&#xff0c;通过针对特定场景的极致优化&#xff0c;获得闪电般的查询性能。 ClickHous…

计算机组成结构—外部存储器

目录 一、磁盘存储器 1. 磁表面存储器和磁记录原理 2. 硬磁盘的分类和基本结构 &#xff08;1&#xff09;硬磁盘存储器的分类 &#xff08;2&#xff09;硬磁盘存储器的组成 3. 磁盘的工作原理 &#xff08;1&#xff09;磁盘存储区域 &#xff08;2&#xff09;磁盘地…

备战蓝桥杯Day40 - 第11届python组真题 - C跑步锻炼

一、题目描述 二、思路 1、使用datetime库中的方法可以很好的解决这个问题。 2、定义起始时间和结束时间&#xff0c;判断是否是周一或者是1号&#xff0c;结果res加上相应的里程数。 3、最后输出 res 即为本题答案。 三、代码实现 import datetimestart datetime.date(2…

【LeetCode】手撕系列—82. 删除排序链表中的重复元素 II

目录 1- 思路2- 题解⭐删除排序链表中的重复元素 II——题解思路 3- ACM模式 原题链接&#xff1a;82. 删除排序链表中的重复元素 II 1- 思路 定义虚拟头结点 定义 cur 指针&#xff0c;cur指针始终指向虚拟头结点&#xff0c;依此操作 cur.next 和 cur.next.next while条件为…

centos7部署zabbix6.4.9

文章目录 [toc]一、环境准备1&#xff09;部署lnmp2&#xff09;修改配置文件3&#xff09;安装数据库 二、部署zabbix1&#xff09;下载zabbix2&#xff09;安装zabbix服务端3&#xff09;修改配置4&#xff09;开机启动5&#xff09;安装客户端 三、登录配置1&#xff09;访问…

KVM+GFS分布式存储

本章内容&#xff1a; 学会KVMGFS分布式存储高可用 1.0 案例环境 1.案例环境 大规模使用 KVM 虚拟机来运行业务&#xff0c;为了保证公司虚拟机能够安全稳定运行&#xff0c; 决定采用 KVMGlusterFS 模式&#xff0c;来保证虚拟机存储的分布部署&#xff0c;以及分布冗余。避…

【技术揭秘】爬取网站或APP应用的几种常用方案:RPA、抓包工具、Python爬虫,你了解多少?

本来准备空闲之余尝试用RPA软件抓取数据&#xff0c;【AIRPA系列】1、利用AIRPA提升工作效率 应用场景 &#xff0c; 最近工作项目有点忙&#xff0c; RPA实操系列可能会晚点了&#xff08;自己真正实操后再写&#xff0c;copy别人的没啥意思&#xff09;。这里简单整理下爬取…

转让无区域资产管理公司要求和步骤

资产管理公司转让是指&#xff0c;一家资产管理公司将其管理的资产或资产组合转让给另一家资产管理公司或买家。这种转让通常是由于各种原因引起的&#xff0c;例如公司战略调整、市场需求变化或者是公司经营状况不佳等。在进行资产管理公司转让时&#xff0c;需要遵循一定的流…

python 08Pandas

1.基础概念 2.基本操作 &#xff08;1&#xff09;加载数据集 import pandas as pd #引入pandas包 打开csv文件 df pd.read_csv(./data/gapminder.tsv,sep\t) #\t制表符&#xff0c;即tab&#xff0c;缩进四个字符 \n表示回车换行 print(type(df)) print(df.head()) #…

vue的监视属性

目录 1. 场景引入2. watch3. 深度监视4. 监视属性简写5. 小结 1. 场景引入 在实际开发中&#xff0c;有时开发者需要根据某个属性的变化&#xff0c;做出相应的决策&#xff0c;因此Vue为开发者提供了watch.这一监视属性&#xff0c;用于实现此类需求。比如下面这个场景&…

解决 macOS 系统向日葵远程控制鼠标、键盘无法点击的问题

解决 macOS 系统向日葵远程控制鼠标\键盘无法点击的问题 1、首先正常配置&#xff0c;在系统偏好设置 - 安全性与隐私内&#xff0c;将屏幕录制、文件和文件夹、完全的磁盘访问权限、辅助功能全部都加入向日葵客户端 2、通过打开的文件访达&#xff0c;使用command shift G…

蓝桥杯2023A-05-互质数(Java)

5.互质数 题目描述 给定 a, b&#xff0c;求 1 ≤ x < a^b 中有多少个 x 与 a^b 互质。由于答案可能很大&#xff0c;你只需要输出答案对 998244353 取模的结果。 输入格式 输入一行包含两个整数分别表示 a, b&#xff0c;用一个空格分隔。 输出格式 输出一行包含一个…

java操作linux

文章目录 远程连接服务器执行linux命令或shell脚本介绍Process的方法相关类UML 工具类基本工具类依赖第三方的工具类 远程连接服务器 java程序远程linux服务器有两个框架分别是&#xff1a;jsch与ganymed-ssh2框架。推荐使用jsch框架&#xff0c;因为ganymed-ssh2框架不支持麒…