当前位置: 首页 > news >正文

Spring关于注解的使用

目录

一、使用注解开发的前提

1.1 配置注解扫描路径

二、使用注解创建对象

2.1 @Controller(控制器储存)

2.2 @Service(服务储存)

2.3 @Repository(仓库储存)

2.4 @Component(组件储存)

2.5 @Configuration(配置储存)

2.6 为什么要这么多类注解

2.7 方法注解@Bean


一、使用注解开发的前提

经历过了Spring的配置文件创建对象之后,我们发现这个方法其实还是有点麻烦,那么有什么更好的方法去创建对象嘛?有!注解的方式创建对象

1.1 配置注解扫描路径

在使用注入创建对象的时候,首先就需要在Spring的配置文件中去配置注解的扫描路径,注意这个配置文件中的其他东西一定要正确不然可能会报一些莫名其妙的错

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:content="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--    配置注解的扫描路径--><content:component-scan base-package="com.gl.demo"/>
</beans>

这里需要注意的是,你配置的包扫描路径是有范围限制的,我这里配置的到demo包底下,如果我还有一个包不在demo包底下,那么这个包下面的注解都是不会生效的

二、使用注解创建对象

在配置文件中配置了包扫描路径之后,我们就可以开始使用注解创建对象的方式来替代在配置文件中创建对象的方式了。接下来将介绍几种常用的注解

  • 类注解:@Controller、@Service、@Repository、@Component、@Configuration
  • 方法注解:@Bean

    就是通过这几个注解,代替了原来配置文件中的标签

2.1 @Controller(控制器储存)

类注解顾名思义就是在类上面添加注解

@Test
public void test() {ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-config.xml");UserController userController = ctx.getBean("userController",UserController.class);userController.sayHi("张三");
}

接下来通过Spring的配置工厂来获取对象

@Test
public void test() {ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-config.xml");UserController userController = ctx.getBean("userController",UserController.class);userController.sayHi("张三");
}

这里可以可以发现即使配置文件中没有写bean标签也可以创建出对象了,由于后面的类注解方式也是一样的就不多解释了

2.2 @Service(服务储存)

@Service
public class UserService {public void sayHi(String name) {System.out.println("Hi," + name);}
}

2.3 @Repository(仓库储存)

@Repository
public class UserRepository {public void sayHi(String name) {System.out.println("Hi," + name);}
}

2.4 @Component(组件储存)

@Component
public class UserComponent {public void sayHi(String name) {System.out.println("Hi," + name);}
}

2.5 @Configuration(配置储存)

@Configuration
public class UserConfiguration {public void sayHi(String name) {System.out.println("Hi," + name);}
}

2.6 为什么要这么多类注解

其实这个注解在底层的实现方式都是一样的,那为什么搞出这么多呢?这是为了代码的可读性!什么层用什么注解一目了然。还要注意的是,这里的类名就是之前配置文件中的id值,所以我们可以直接通过类名首字母小写的方式获取到对象如果类名是两个大写字母开头那就使用原类名获取对象

2.7 方法注解@Bean

这里的@Bean就是原来的在配置文件中的Bean标签,所以当我们的方法返回一个对象的时候就可以使用这个@Bean注解,同时方法名就是原来配置文件中的id值。最后也是最重要的一点就是,这个方法注解需要搭配类注解一起使用

@Component
public class Users {@Beanpublic User user1() {User user = new User();user.setId(1);user.setName("Java");return user;}
}
public void test() {ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");User user = (User) context.getBean("user1");System.out.println(user.toString());
}

相关文章:

Spring关于注解的使用

目录 一、使用注解开发的前提 1.1 配置注解扫描路径 二、使用注解创建对象 2.1 Controller&#xff08;控制器储存&#xff09; 2.2 Service&#xff08;服务储存&#xff09; 2.3 Repository&#xff08;仓库储存&#xff09; 2.4 Component&#xff08;组件储存&#xff09; …...

图像处理入门 1(Introduction to image processing)

如何获得一张照片 &#xff08;How to obtain a photo&#xff09;&#xff1f; 每次看到一些光学设备的规格介绍的时候&#xff0c;一些专用名词&#xff0c;例如&#xff1a;等效焦距&#xff0c;曝光模式 等 让你一头雾水。爱学习的你一定十分好奇他们是什么意思。每次看到…...

中国大模型开源创新与合作的新篇章 | 2023 CCF中国开源大会

2023年10月21日至22日&#xff0c;由中国计算机学会&#xff08;CCF&#xff09;和开放原子开源基金会联合主办的CCF中国开源大会&#xff08;CCF ChinaOSC&#xff09;在湖南省长沙市北辰国际会议中心成功召开。此次大会以“开源联合&#xff0c;聚力共赢”为主题&#xff0c;…...

vue项目切换页面白屏的解决方案

问题描述 1、页面切换后白屏&#xff0c;同时切换回上一个页面同样白屏 2、刷新后正常显示 3、有警告&#xff1a;Component inside <Transition> renders non-element root node that cannot be animated 解决方法 <Transition>中的组件呈现不能动画化的非元素根…...

5G vs 4G

5G与4G的关键性能指标对比 指标名称流量密度连接密度空口时延移动性能效指标用户体验速率频谱效率峰值速率4G 参考值0.1 M b i t / s / m 2 Mbit/s/m^2 Mbit/s/m2 1 ∗ 1 0 5 / k m 2 1*10^5/km^2 1∗105/km210ms350km/h1倍10Mbit/s1倍1Gbit/s5G 参考值10 M b i t / s / m 2 M…...

【JavaEE重点知识归纳】第11节:认识异常

目录 一&#xff1a;异常的概念和体系结构 1.概念 2.体系结构 3.异常分类 二&#xff1a;异常的处理 1.防御式编程 2.异常的抛出 3.异常的捕获 4.异常的处理流程 三&#xff1a;自定义异常 一&#xff1a;异常的概念和体系结构 1.概念 &#xff08;1&#xff09;在…...

一键自助建站系统api版系统源码

自助建站系统,一建建站系统api版,自动建站 安装推荐php7.2或7.2以下都行 可使用虚拟主机或者服务器进行搭建。 分站进入网站后台 域名/admin 初始账号123456qq.com密码123456 找到后台的网站设置 将主站域名及你在主站的通信secretId和通信secretKey填进去。 即可正常使用 通信…...

全国三维数字化创新设计大赛湖北赛区省赛成功举办

须弥芥子&#xff0c;数字如海。10月14日—15日&#xff0c;2023 年数字科技文化节——第16届全国三维数字化创新设计大赛湖北赛区省赛暨产教联合体大会在武汉软件工程职业学院成功举行。 &#xff08;大赛全体专家领导合影&#xff09; 全国三维数字化创新设计大赛组委会副秘…...

OpenCV #以图搜图:均值哈希算法(Average Hash Algorithm)原理与实验

1. 介绍 均值哈希算法&#xff08;Average Hash Algorithm&#xff09; 是哈希算法的一种&#xff0c;主要用来做相似图片的搜索工作。 2. 原理 均值哈希算法&#xff08;aHash&#xff09;首先将原图像缩小成一个固定大小的像素图像&#xff0c;然后将图像转换为灰度图像&am…...

博通BCM575系列RDMA网卡驱动bnxt_re分析(一)

简介 整个BCM系列驱动分成以太网部分(bnxt_en.ko)和RDMA部分(bnxt_re.ko), 两个模块之间通过内核的auxiliary_bus进行管理.我们主要分析下bnxt_re驱动. 代码结构 这个驱动的核心是 qplib_fp.c, 这个文件主要包含了驱动的数据路径, 包括Post Send, Post Recv, Poll CQ流程的实…...

集合总结-

Collection 常用方法 package com.test01;import java.util.ArrayList; import java.util.Collection; /*添加元素---boolean add(E e);移除元素---boolean remove(Object c);判断元素是否存在---boolean contains(Object c);*/ public class S {public static void main(Str…...

【知识串联】概率论中的值和量(随机变量/数字特征/参数估计)【考研向】【按概率论学习章节总结】

就我的概率论学习经验来看&#xff0c;这两个概念极易混淆&#xff0c;并且极为重点&#xff0c;然而&#xff0c;在概率论的前几章学习中&#xff0c;如果只是计算&#xff0c;对这方面的辨析不清并没有问题。然而&#xff0c;到了后面的参数估计部分&#xff0c;却可能出现问…...

上游服务不可用了,下游服务如何应对?

上游服务不可用了&#xff0c;下游服务如何应对&#xff1f; 引言 在系统中&#xff0c;上游服务和下游服务是两个关键概念。上游服务通常指的是提供某种功能或数据的服务端&#xff0c;它接收来自下游服务的请求&#xff0c;并根据请求进行处理和响应。下游服务通常指的是发…...

WebGL笔记:矩阵的变换之平移的实现

矩阵的变换 变换 变换有三种状态&#xff1a;平移、旋转、缩放。当我们变换一个图形时&#xff0c;实际上就是在移动这个图形的所有顶点。解释 webgl 要绘图的话&#xff0c;它是先定顶点的&#xff0c;就比如说我要画个三角形&#xff0c;那它会先把这三角形的三个顶点定出来…...

XTU-OJ 1187-Candy

WCB某天买了非常多的糖果并把它们分成N份&#xff0c;依次分别有1&#xff0c;2&#xff0c;3…,N个糖果。他想拿出其中的3份分给他的室友&#xff0c; 为了不让室友们闹意见&#xff0c;必须让这三份的糖果总数恰好能被三人均分。请问他一共有多少种不同的组合方案数&#xff…...

基于 nodejs+vue城市轨道交通线路查询系统mysql

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…...

电商时代,VR全景如何解决实体店难做没流量?

近日&#xff0c;电商和实体经济的对立成为了热门话题&#xff0c;尽管电商的兴起确实对线下实体店造成了一定的冲击&#xff0c;但实体店也不是没有办法挽救。VR全景助力线下实体店打造线上店铺&#xff0c;打通流量全域布局&#xff0c;还能实现打开产品、查看产品内部细节等…...

操作系统-浅谈CPU与内存

目录 计算机的基本组成CPU内存虚拟内存内存分段内存分页 CPU与内存的交互过程高速缓存cache 所有图片均来自&#xff1a;小林coding 计算机的基本组成 计算机由软件和硬件组成 硬件由CPU(中央处理器&#xff09;存储器(内存外存&#xff09;外部设备组成。 软件由应用软件和系…...

K8s 部署 CNI 网络组件+k8s 多master集群部署+负载均衡

------------------------------ 部署 CNI 网络组件 ------------------------------ ---------- 部署 flannel ---------- K8S 中 Pod 网络通信&#xff1a; ●Pod 内容器与容器之间的通信 在同一个 Pod 内的容器&#xff08;Pod 内的容器是不会跨宿主机的&#xff09;共享同一…...

若依微服务上传图片文件代理配置

在使用若依微服务文件上传时候,文件上传成功会上传到D:/ruoyi/uploadPath目录下。默认使用9300端口进行访问图片文件,现在我想把它代理到80端口应该怎么做呢? 配置前:http://localhost:9300/statics/2023/09/24/test.jpg 配置后:http://localhost/statics/2023/09/24/test…...

10大好用的班组建设系统盘点!助力企业高效开展班组建设

在2026年数字化转型的深水区&#xff0c;班组建设系统已成为企业夯实基层管理、提升执行力的核心引擎。面对市场上琳琅满目的工具&#xff0c;如何筛选出真正好用的班组建设系统&#xff0c;切实助力企业高效开展班组建设&#xff0c;是管理者面临的首要难题。本文深度盘点10大…...

网络协议深度解析:从OSI七层模型到TCP/IP实战应用

1. OSI七层模型&#xff1a;网络世界的通用语言 第一次接触OSI七层模型时&#xff0c;我完全被那些专业术语搞晕了。直到后来在实际项目中调试网络问题&#xff0c;才真正理解这个模型的精妙之处。简单来说&#xff0c;OSI模型就像是一本网络通信的"使用说明书"&…...

从1M到1T1M:忆阻器阵列结构演进史及其在AI芯片中的应用前景

从1M到1T1M&#xff1a;忆阻器阵列结构演进史及其在AI芯片中的应用前景 在半导体技术持续突破的今天&#xff0c;忆阻器阵列正以其独特的物理特性重新定义计算架构的边界。这种兼具存储与计算能力的纳米级器件&#xff0c;正在神经网络加速领域展现出颠覆性潜力。本文将带您穿越…...

LFM2.5-1.2B-Thinking-GGUF入门必看:3步完成低资源GPU部署(含健康检查命令)

LFM2.5-1.2B-Thinking-GGUF入门必看&#xff1a;3步完成低资源GPU部署&#xff08;含健康检查命令&#xff09; 1. 模型简介 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型&#xff0c;专为低资源环境优化设计。这个模型采用GGUF格式&#xff0c;配合llama.…...

Balena Etcher:三步完成系统镜像烧录,告别复杂命令的困扰

Balena Etcher&#xff1a;三步完成系统镜像烧录&#xff0c;告别复杂命令的困扰 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 你是否曾经因为需要制作系统启动…...

Windows环境下Jaeger全链路监控系统搭建指南

1. 为什么需要全链路监控系统 在微服务架构中&#xff0c;一个用户请求可能会经过多个服务的处理。想象一下&#xff0c;你在电商网站下单时&#xff0c;这个操作会触发订单服务、支付服务、库存服务等多个系统的协同工作。当出现问题时&#xff0c;传统的日志排查就像在迷宫里…...

【分箱进阶篇】分箱的工程细节:从训练到部署的完整模式

基础篇参考&#xff1a;【分箱基础篇】pandas 分箱双子星&#xff1a;pd.cut 与 pd.qcut ​ 我们在基础篇讲了 pd.cut 和 pd.qcut 各自怎么用。但在实际项目里&#xff0c;分箱不是调一次函数就完事的。通常来说&#xff0c;训练集上算出来的切分点要保存下来&#xff0c;测试集…...

从休眠到唤醒:深入解读AUTOSAR CanNm的Bus Load Reduction与Immediate Restart机制

从休眠到唤醒&#xff1a;深入解读AUTOSAR CanNm的Bus Load Reduction与Immediate Restart机制 在新能源汽车和智能座舱快速发展的今天&#xff0c;车载电子系统的功耗优化与实时响应能力成为工程师面临的核心挑战。AUTOSAR CanNm模块作为车载网络管理的关键组件&#xff0c;其…...

终极指南:使用 crypto-js 测试套件确保你的加密功能100%可靠

终极指南&#xff1a;使用 crypto-js 测试套件确保你的加密功能100%可靠 【免费下载链接】crypto-js JavaScript library of crypto standards. 项目地址: https://gitcode.com/gh_mirrors/cr/crypto-js 在Web开发中&#xff0c;你有没有遇到过这样的场景&#xff1a;你…...

告别TeamViewer!用RustDesk自建服务器实现跨平台远程控制(Windows/Ubuntu客户端全配置)

告别商业远程控制软件&#xff1a;用RustDesk自建服务器全流程指南 远程控制软件已经成为现代工作场景中不可或缺的工具&#xff0c;无论是技术支持、远程办公还是跨设备协作&#xff0c;一个稳定高效的远程连接方案都能极大提升工作效率。然而&#xff0c;商业软件如TeamViewe…...