spring的常用注解

目录

1.前言

2.web url映射

2.1@RequestMapping

2.2PostMapping

2.3GetMapping

3.参数接受和接口响应

3.1@RequestParam

3.2@RequstBoby

3.3@ResponseBoby

3.4@RestController

4.bean的存储

4.1@Controller

4.2@Service

4.3@Repository

4.4@Compontent

4.5@Configuration

4.6@Bean

5 bean的获取

5.1@Autowired

5.2@Qualifier

5.3@Resource

5.4常见面试题


1.前言

  我们在学习spring的时候,经常会用到注解。那么spring都有哪些注解呢?它是一种为程序代码提供元数据信息的标记。在Java中,注解以@开头,可以附加到类,方法,字段或者其他代码元素上,用于提供额外的信息或指示编辑器解释器或其他工具对这些代码元素进行特殊处理。接下来,我将介绍一些常见的注解。

2.web url映射

2.1@RequestMapping

由上图我们可以知道,该注解既可以作用于方法上,也可以作用于类上。是一种运行时注解,它实现了@Documented和@Mapping两个注解。我们可以通过它来写上url映射的地址,前端的url和它要交互得名字一样。该注解可以实现任意http请求的方法,包括get和post方法。

2.2PostMapping

它只能处理post请求的方法。

2.3GetMapping

它只能处理get请求方法

3.参数接受和接口响应

3.1@RequestParam

获取请求中的参数

3.2@RequstBoby

获取请求中的数据,一般是json形式

3.3@ResponseBoby

用于定义服务器向客户端响应的是数据格式。一般配上@Controller一起使用

3.4@RestController

 

实现了@ResponBoby和@Controller注解。使用这一个可以代替这两个的使用。

告诉spirng这是一个处理器,可以处理http请求,并且可以返回数据。

4.bean的存储

4.1@Controller

控制器存储,将对象存储到spring中并且告诉它这是一个控制器。它控制Service层

4.2@Service

服务存储,一般放地是业务逻辑类的代码。它控制的是Mapper层

4.3@Repository

仓库存储,用于表示数据访问层,一般我们用MyBatis框架提供的@Mapper注解来表述数据访问层。

4.4@Compontent

这属于是一个元注解,就是注解其它类。@Controller和@Service这些注解都实现了该注解。这些注解被称为@Compontent的衍生注解

4.5@Configuration

这是一个配置存储的注解。

4.6@Bean

方法注解,这个注解主要是解决Spring MVC中的两个问题

1.使用外部包里的类,没办法添加类注解

2.一个类需要多个对象,比如多个数据源

而@Bean就可以解决这些问题

我们可以通过代码演示一下这个是怎么用的。

首先我们定义一个用户。并且用@Bean来注解一下。

 @Beanpublic User user(){User user = new User();user.setAge(18);user.setName("zhangsan");return user;}

然后我们来尝试获取一下:

public static void main(String[] args) {ApplicationContext context = SpringApplication.run(DemoApplication.class, args);User user = context.getBean(User.class);System.out.println(user);}

运行以后发现出问题了,不行。

 这是因为@Bean注解要配合其它注解使用,我们在类上加一个@Component。

@Component
public class TestController {@Beanpublic User user(){User user = new User();user.setAge(18);user.setName("zhangsan");return user;}
}

5 bean的获取

5.1@Autowired

类的注入,直接获取到。

@Autowiredprivate User user;

5.2@Qualifier

指定要注入的bean对象,在@Qualifier的value属性中,指定注入bean的名称它不能单独使用,必须和@Autowired一起使用。

5.3@Resource

按照bean的名称注入,通过name属性指定要注入的bean的名称。

5.4常见面试题

@Autowired和@Resource的区别:

1.@Autowired是由spring框架提供的注解,而@Resource是由jdk提供的

2.@Autowired默认是按照类型注入,而@Resource是按照名称获取的,相比于@Autowired来说,@Resource支持更多的参数设置,例如name设置,根据名称获取bean

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

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

相关文章

短视频生成背景文字工具(前端工具)

过年这两天有些无聊就刷刷抖音,刷着刷着自己也蠢蠢欲动,想发上几个,可是却找不到合适自己的模板。由于个人喜欢一些古诗文之类的,所以自己简单的编写了一个小工具,如下图: 当设置好了之后,将浏…

关于Spring Aop的通知类型

一、概述 1.1 通知类型 为了符合各种流程处理,通知类型提供了5种,可以对目标方法进行全方位处理,如下所示: 通知类型说明前置通知(Before advice)在某连接点之前执行的通知,但这个通知不能阻止…

Python数据分析实验二:Python数据预处理

目录 一、实验目的与要求二、实验任务三、主要程序清单和运行结果(一)对chipotle.csv文件的销售数据进行分析(二)对描述泰坦尼克号成员的信息进行可视化和相关分析 四、实验体会 一、实验目的与要求 1、目的:   掌握…

linux kernel内存泄漏检测工具之slub debug

一、背景 slub debug 是一个debug集,聚焦于kmem_cache 分配机制的slub内存(比如kmalloc),这部分内存在内核中使用最频繁,slub debug其中有相当部分是用来处理内存踩踏,内存use after free 等异常的&#x…

创建electron,解决包清理的问题,解决镜像源卡住下载时间长

我的电脑用户名是Anyphasy,我的node.js安装在D:\developp\nodejss18.18.0 使用npm config get prefix查看node.js安装路径 npm config get prefix 创建electron 创建package.json文件,它里面记载了你的electron版本,项目描述,以及启动命令等信息 npm init -y 先查看你自己的…

禅道项目管理系统身份认证绕过漏洞

禅道项目管理系统身份认证绕过漏洞 1.漏洞描述 禅道项目管理软件是国产的开源项目管理软件,专注研发项目管理,内置需求管理、任务管理、bug管理、缺陷管理、用例管理、计划发布等功能,完整覆盖了研发项目管理的核心流程。 禅道项目管理系统…

手写一个RNN前向传播以及反向传播

前向传播 根据公式 st tanh (Uxt Wst-1 ba) ot softmax(Vst by ) m 3 词的个数 n 5 import numpy as np import tensorflow as tf # 单个cell 的前向传播过程 # 两个输入,x_t,s_prev,parameters def rnn_cell_forward(x_t,s_prev,parameter…

运算符重载(1)

1.加号运算符重载&#xff0c;这里用编译器统一的名称operator代替函数名 #include<iostream> using namespace std; //1.成员函数的加号重载 //2.全局函数的加号重载 class Person { public:Person() {};//1.成员函数的加号重载//Person operator(Person& p)//{// P…

前端HTML5学习2(新增多媒体标签,H5的兼容性处理)

前端HTML5学习2新增多媒体标签&#xff0c;H5的兼容性处理&#xff09; 分清标签和属性新增多媒体标签新增视频标签新增音频标签新增全局属性 H5的兼容性处理 分清标签和属性 标签&#xff08;HTML元素&#xff09;和属性&#xff0c;标签定义了内容的类型或结构&#xff0c;而…

k8s学习(三十七)centos下离线部署kubernetes1.30(高可用)

文章目录 准备工作1、升级操作系统内核1.1、查看操作系统和内核版本1.2、下载内核离线升级包1.3、升级内核1.4、确认内核版本 2、修改主机名/hosts文件2.1、修改主机名2.2、修改hosts文件 3、关闭防火墙4、关闭SELINUX配置5、时间同步5.1、下载NTP5.2、卸载5.3、安装5.4、配置5…

BPE、Wordpiece、Unigram、SpanBERT等Tokenizer细节总结

BPE(Byte Pair Encoding) GPT-2和Roberta用的是这种&#xff0c;不会产生[UNK]这个unknown字符 这部分部分摘录自https://martinlwx.github.io/zh-cn/the-bpe-tokenizer/ 看以下code例子就足够理解了&#xff0c;核心是维护self.merges&#xff08;维护一个pair->str的字…

[蓝桥杯2024]-Reverse:rc4解析(对称密码rc4)

无壳 查看ida 这里应该运行就可以得flag&#xff0c;但是这个程序不能直接点击运行 按照伪代码写exp 完整exp&#xff1a; keylist(gamelab) content[0xB6,0x42,0xB7,0xFC,0xF0,0xA2,0x5E,0xA9,0x3D,0x29,0x36,0x1F,0x54,0x29,0x72,0xA8, 0x63,0x32,0xF2,0x44,0x8B,0x85,0x…

如何在 Visual Studio 中通过 NuGet 添加包

在安装之前要先确定Nuget的包源是否有问题。 Visual Studio中怎样更改Nuget程序包源-CSDN博客 1.图形界面安装 打开您的项目&#xff0c;并在解决方案资源管理器中选择您的项目。单击“项目”菜单&#xff0c;然后选择“管理 NuGet 程序包”选项。在“NuGet 包管理器”窗口中…

详解如何品味品深茶的精髓

在众多的茶品牌中&#xff0c;品深茶以其独特的韵味和深厚的文化底蕴&#xff0c;赢得了众多茶友的喜爱。今天&#xff0c;让我们一同探寻品深茶的精髓&#xff0c;品味其独特的魅力。 品深茶&#xff0c;源自中国传统茶文化的精髓&#xff0c;承载着世代茶人的智慧与匠心。这…

03-MVC执行流程-参数解析与Model

重要组件 准备Model&#xff0c;Controller Configuration public class WebConfig {ControllerAdvicestatic class MyControllerAdvice {ModelAttribute("b")public String bar() {return "bar";}}Controllerstatic class Controller1 {ResponseStatus(H…

windows环境下安装Apache

首先apache官网下载地址&#xff1a;http://www.apachelounge.com/download/按照自己的电脑操作系统来安装 这里我安装的是win64 主版本是2.4的apache。 然后解压压缩包到一个全英文的路径下&#xff01;&#xff01;&#xff01;一定一定不要有中文 中文符号也不要有&#xff…

ansible-copy用法

目录 概述实践不带目录拷贝带目录拷贝 概述 ansible copy 常用用法举例 不带目录拷贝&#xff0c;拷贝的地址要写全 带目录拷贝&#xff0c;拷贝路径不要写在 dest 路径中 实践 不带目录拷贝 # with_fileglob 是 Ansible 中的一个循环关键字&#xff0c;用于处理文件通配符匹…

【Vue3+Tres 三维开发】02-Debug

预览 介绍 Debug 这里主要是讲在三维中的调试,同以前threejs中使用的lil-gui类似,TRESJS也提供了一套可视化参数调试的插件。使用方式和之前的组件相似。 使用 通过导入useTweakPane 即可 import { useTweakPane, OrbitControls } from "@tresjs/cientos"const {…

数字文旅重塑旅游发展新格局:以数字化转型为突破口,提升旅游服务的智能化水平,为游客带来全新的旅游体验

随着信息技术的迅猛发展&#xff0c;数字化已成为推动各行各业创新发展的重要力量。在旅游业领域&#xff0c;数字文旅的兴起正以其强大的驱动力&#xff0c;重塑旅游发展的新格局。数字文旅以数字化转型为突破口&#xff0c;通过提升旅游服务的智能化水平&#xff0c;为游客带…

HarmonyOS Next从入门到精通实战精品课

第一阶段&#xff1a;HarmonyOS Next星河版从入门到精通该阶段由HarmonyOS Next星河版本出发&#xff0c;介绍HarmonyOS Next版本应用开发基础概念&#xff0c;辅助学员快速上手新版本开发范式&#xff0c;共计42课时 第一天鸿蒙NEXT Mac版、Windows版【编辑器】和【模拟器】&a…