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来注解一下。

 @Bean
    public 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 {
   @Bean
    public User user(){
       User user = new User();
       user.setAge(18);
       user.setName("zhangsan");
       return user;
    }
}

5 bean的获取

5.1@Autowired

类的注入,直接获取到。

@Autowired
    private 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

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

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

相关文章

判断n以内的素数个数的五种方法+时间对比

目录 方法一:暴力法 复杂度 方法二:跨度为6的倍数的优化 复杂度 方法三:埃氏筛法 复杂度 方法四:埃氏筛法的改良 复杂度 方法五:线性筛 复杂度 性能对比测试 练习 方法一:暴力法 就是写一个函…

Nacos 集群 On K8s 实践服务注册发现、服务动态配置

一、K8s 部署 Nacos 集群 安装规划 组件replicas类型mysql1StatefulSetnacos3StatefulSet 使用 k8s 版本为:v1.18.0 。 本次使用 OpenEBS 来作为存储引擎,OpenEBS 是一个开源的、可扩展的存储平台,它提供了一种简单的方式来创建和管理持久…

JavaEE——Spring Boot入门

目录 📚 JavaEE——Spring Boot入门 🔧 1. 新建Spring Boot项目 🛠 2. 添加pom依赖 📝 3. 添加application.yml文件 📂 4. 创建Dao层 🔧 5. 创建Service层 🖥️ 6. 创建Controller层及HT…

easyExcel快速入门

目录 🧂1.简单介绍 🌭2.快速入门 🥓1.导入依赖 🍿2.导出到excel 🎏3.读入数据 🎉4.下载 1.简单介绍 传统操作Excel大多都是利用Apach POl进行操作的,但是POI框架并不完善,使用过程非常繁琐且有较多…

redisson分布式锁的单机版应用

package com.redis;/*** author linn* date 2024年04月23日 15:31*/ import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.springframework.context.annotation.Bean; import org.springframework.context.…

多端文件互传软件-LocalSend

一、前言 日常学习或者是工作需求,需要手机和电脑互传文件。用到频率低的话,使用即时通讯软件也就够了。 像我日常使用的多端互传文件软件是LocalSend。 二、 LocalSend LocalSend是一款基于局域网的文件传输工具。 LocalSend是一种用于在本地网络中…

super与this

目录 原型链与继承继承中的原型链 classsuper与this 我们可能会对一个问题感到好奇:为什么在派生类中,我们需要在调用this之前调用super。我们通常将其视为一种规范,却很少深入探究这个规范的真正意义。许多人认为super不过是ES6之前继承方式…

SpringBoot 3.2.5 引入Swagger(OpenApi)

SpringBoot 3.2.5 引入Swagger(OpenApi) pom文件配置文件启动类Controller 层ApiFox题外话 springdoc-openapi 和 swagger 都可以用,用其中一个就行,不用两个都引入。 这里简单记录以下springdoc-openapi。 springdoc-openapi(J…

每日算法之两两交换链表中的节点

题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head [1,2,3,4] 输出&…

sheng的学习笔记-AI-支持向量机(SVM)

目录:sheng的学习笔记-AI目录-CSDN博客 目录 什么是向量机 SVM算法原理 SVM基本模型 SVM对偶问题 什么是对偶问题: 为什么使用对偶问题 拉格朗日定理 拉格朗日乘子法 对偶问题算法 非线性SVM算法原理 核函数 常用核函数 软间隔与正则化 软…

RabbitMQ-死信队列

面试题:你们是如何保证消息不丢失的? 1、什么是死信 在 RabbitMQ 中充当主角的就是消息,在不同场景下,消息会有不同地表现。 死信就是消息在特定场景下的一种表现形式,这些场景包括: 1. 消息被拒绝访问&…

教你一分钟快速部署 Llama3 中文大模型

之前百度创始人李彦宏先生曾经说过“开源大模型会越来越落后,闭源模型会持续领先”,但国货表示真的不服,紧接着被扎克伯格同学就给了当头一棒,向他展示了什么叫做顶级开源大模型。那变听我娓娓道来。 美国当地时间4月18日&#x…

使用NGINX做局域网内 浏览器直接访问链接 拓展外网链接访问本地

达成目的功能: 在本地服务的一个文件路径下,局域网内用ip和路径名访问到对应的地址;如 10.5.9.0/v1 即可访问到 某个固定本地地址目录 V1下,名为index.html的文件。前言 NGINX 是一个非常流行的开源 Web 服务器和反向代理服务器…

5分钟梳理银行测试,文末附带实战项目,0经验入行so easy

很多银行招聘都要求有相关从业经验,这对于想跨入这个岗位的0经验从业同学可真犯了难 “你都不让我上岗,我哪来的工作经验呢?” 为了解决这个问题,小编整理了本篇文章,从3个方面介绍银行项目是如何进行测试的 银行的…

思维+线性dp,CF573 B. Bear and Blocks

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 573B - Codeforces 二、解题报告 1、思路分析 本题给的图还是很直…

制糖工业智能工厂数字孪生可视化平台,推进制糖产业数字化转型

制糖工业智能工厂数字孪生可视化平台,推进制糖产业数字化转型。随着信息技术的快速发展,数字化转型已成为各行各业的重要趋势。在糖果加工制造领域,智能工厂数字孪生可视化平台的出现,为行业数字化转型注入了新的活力。 糖果加工制…

应用于智能装备制造,钡铼IOy系列模块展现其强大的灵活性和实用性

随着科技的飞速发展,智能制造已经成为工业4.0时代的核心驱动力。在此背景下,钡铼技术推出的IOy系列模块以其独特的设计、卓越的性能以及无可比拟的灵活性与实用性,在智能装备制造领域展现出了强大的技术优势和应用价值。 首先,钡…

Redis面试题二(数据存储)

目录 1.redis 的数据过期策略 1. 惰性删除(Lazy Expiration) 2. 定期删除(Periodic Expiration) 3. 定时删除(Timing-Based Expiration) 实际应用中的组合策略 2.redis 有哪些内存淘汰机制 volatile&…

Maven解决找不到依赖项

报错如图 方案一&#xff1a;Maven的Setting文件中添加albaba的镜像文件 1.下载maven &#xff1a;Maven – Download Apache Maven 2. 配置镜像 更改成这个&#xff1a; <mirror> <id>alimaven</id> <name>aliyun maven</name> <url&g…

37.WEB渗透测试-信息收集-企业信息收集(4)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;36.WEB渗透测试-信息收集-企业信息收集&#xff08;3&#xff09;-CSDN博客 关于主域名收…