Spring中的注解装配
1.关于Spring中的注解装配的作用
Spring中的注解装配简化了xml中bean的配置,大大提高了开发效率。
原本我们想在spring容器中使用某个类需要先在xml中配置该类的bean。使用注解后可以直接通过包扫描的方式自动在我们调用类时自动装配。
例如:
当我们想要使用UserDaO实现类时需要再Xml配置文件上添加如下配置
<bean id="userDao" class="com.yc.dao.impl.UserDaoImpl" />但是到我们在类上添加注解:@complicate一样可以到达上述xml的效果
@Repository("userDao") public class UserDaoImpl implements UserDao {@Overridepublic void getUser() {System.out.println("注解测试==>、、、");return ;} }xml中的
<bean class="com.xxxx" />就相当于===》@Repository()
而<bean id="userDao" /> 就箱单于==》@Repository("userDao")
但为了可以识别到我们的注解需要再xml中配置包扫描:
<context:component-scan base-package="com.yc"/>//此处的包要写成自己对应的项目包如此一来bean的配置也就大大简化,提高了开发效率。
2.Ioc中的注解:
| 注解 | 说明 |
|---|---|
| @Component | 使用在类上用于实例化Bean 相当于 <bean></bean> |
| @Controller | 使用在web层类上用于实例化Bean |
| @Service | 使用在service层类上用于实例化Bean |
| @Repository | 使用在dao层类上用于实例化Bean |
需要注意的是:使用注解时,当类级别注解不指定具体的 bean 名称时,Spring 会使用类的名称(byname)作为 bean 的名称,比如UserDaoImpl的类加上注解@Repository,而不设置注解参数时,spring会默认以userDaoImpl作为该bean的 id。所以在使用过程中应该注意。
例如:
你会发现注解不设置参数时
@Repository public class UserDaoImpl implements UserDao { private User user; public void setUser(User user){ this.user=user; }@Override public void getUser() { System.out.println("注解测试==>、、、"); return ; } }当我通过测试类去调用时,控制台就会报错,显示找不到bean。
测试类如下:
@Testpublic void Springtest2(){ClassPathXmlApplicationContext cac=new ClassPathXmlApplicationContext("springConfig.xml");UserDao userDao=cac.getBean(UserDaoImpl.class);userDao.getUser();System.out.println("````");}而加上(“userDao”)便可以找到
@Repository("userDao") public class UserDaoImpl implements UserDao { private User user; public void setUser(User user){ this.user=user; }@Override public void getUser() { System.out.println("注解测试==>、、、"); return ; } }原因:
在 Spring 框架中,
@Repository注解用于标识一个类属于数据访问层(DAO)的组件。默认情况下,Spring 会按照类型来查找并创建相应的 bean 实例。在示例中,当类级别注解
@Repository不指定具体的 bean 名称时,Spring 使用类的名称(byname)作为 bean 的名称此处的例子即以userDaoImpl作为其名称而不是以userDao为名称,所以在容器扫描识别时才会显示找不到userDao的bean,容器只扫描到userDaoImpl的bean。因此,如果你的类名为UserDaoImpl,那么根据默认的查找规则,Spring 将会寻找一个名为 "userDaoImpl" 的 bean。对于第一个示例中的类:
@Repository public class UserDaoImpl implements UserDao {// ... }如果未在
@Repository注解中指定 bean 的名称,Spring 默认会使用类名小写(camelCase)。因此,它将在上下文中查找名为 "userDaoImpl" 的 bean。如果找不到与该名称匹配的 bean,就会出现找不到 bean 的错误。而对于第二个示例中的类:
java
@Repository("userDao") public class UserDaoImpl implements UserDao {// ... }
@Repository注解指定了具体的 bean 名称为 "userDao",这意味着 Spring 在上下文中查找名为 "userDao" 的 bean,并成功创建了实例。综上所述,注解
@Repository的查找方式实际上是基于 bean 的名称(byname)进行查找的。你可以通过显式指定@Repository注解的值,来定制 bean 名称并避免找不到 bean 的错误。
3.DI注解
| 注解 | 说明 |
|---|---|
| @Autowired | 使用在字段上用于根据类型依赖注入,相当于 <property></property> ,根据类型注入。底层使用反射 |
| @Qualifier | 结合@Autowired一起使用,不能单独使用。根据id查找同类型下的实例 |
| @Resource | 相当于@Autowired+@Qualifier,按照名称进行注入 |
相关文章:
Spring中的注解装配
1.关于Spring中的注解装配的作用 Spring中的注解装配简化了xml中bean的配置,大大提高了开发效率。 原本我们想在spring容器中使用某个类需要先在xml中配置该类的bean。使用注解后可以直接通过包扫描的方式自动在我们调用类时自动装配。 例如: 当我们想…...
深度优先搜索|130, 200
深度优先搜索|130. 被围绕的区域, 200. 岛屿数量 被围绕的区域岛屿数量 被围绕的区域 这个题应该是从外到里做,我们应该去找和外圈的’O’相通的所有’O’,而不是去找内圈被包围的’O’。 所以我们做的就是从边界的’O’出发,把和他相连的所…...
go-resty
一. go-resty一个优秀的 HTTP 客户端库 go-resty超时控制示例 go-resty自动重示例 go-resty TLS示例 go-resty 与连接池 go-resty 与代理 go-resty 与认证 总结go-resty中提供的API 一. go-resty一个优秀的 HTTP 客户端库 在 Golang 标准库中提供了net/http 具体参考该文档 这…...
香港服务器速度不稳定的原因有哪些
香港服务器速度不稳定的原因有哪些 网络连接的稳定性和速度对于个人和企业来说至关重要。然而,许多用户经常遇到香港服务器速度不稳定的问题,有时候快,有时候慢,这给他们的在线体验和工作效率带来了困扰。本文将探讨香港服务器速…...
企业架构NOSQL数据库之MongoDB
目录 一、背景描述及其方案设计 (一)业务背景描述 (二)模拟运维设计方案 二、Mongodb介绍 (一)nosql介绍 (二)产品特点 1、存储性 2、 效率性 3、结构 三、安装和配置 (一)…...
鸟哥马哥共叙Linux发展
导读北京时间3月28日,由51CTO学院和人民邮电出版社信息技术分社联合举办的[开放见远]“鸟哥”大陆行Linux技术沙龙在位于北京市西三环久凌大厦的51CTO学院举行。 台湾著名Linux网站——“鸟哥的Linux私房菜”站长蔡德明,51CTO学院讲师马哥教育创始人马永…...
OpenCV中常用算子
一、图像运算 Mat src, src1, src2, dst;// 图像运算 加 减 乘 除cv::add(src1, src2, dst); // 相加:src1src2cv::scaleAdd(src1, 1.0, src2, dst); // 相加:1.0*src1src2cv::addWeighted(src1, 0.3, src2, 0.7,…...
Android 11.0 系统限制上网系列之iptables用IOemNetd实现app某个时间段禁止上网的功能实现
1.前言 在11.0的系统rom定制化开发中,对于系统限制网络的使用,在system中netd网络这块的产品需要中,会要求设置app某个时间段禁止上网的功能, liunx中iptables命令也是比较重要的,接下来就来在IOemNetd这块实现app某个时间段禁止上网的的相关功能,就是在 系统中只能允许…...
【JavaSE】面向对象编程思想之继承
【本节目标】 1. 继承 2. 组合 目录 1. 为什么需要继承 2. 继承概念 3. 继承的语法 4. 父类成员访问 4.1 子类中访问父类的成员变量 4.2 子类中访问父类的成员方法 5. super关键字 6. 子类构造方法 7. super和this 8. 再谈初始化 9. protected 关键字 10. 继承方式…...
Golang make和new的区别
make 和 new new函数 作用 分配内存设置零值返回指针 eg: type Student struct{name stringage int }func main(){//new 一个内建类型num : new(int)fmt.Println(*num) //打印:0//new一个自定义类型s : new(Student)s.name "yx"fmt.Prin…...
(前后端交互式)Ajax上传图片 + 更换背景图片
前后端交互图片文件 上传-图片 注意1:上传的图片必须在2MB以内 注意2:服务器端oss(阿里云对象存储)为了安全性,图片url网址不能直接在浏览器地址栏访问 请用img/背景图方式进行使用 上传图片的代码实现 \* 目标&#…...
自媒体常见玩法
有声小说转成视频 题材来源 喜马拉雅 工具 https://trace.moe/ 33台词找台词 文字转视频 题材来源 小说类APP书籍 音乐转视频...
【react】react生命周期钩子函数:
文章目录 一、生命周期概念:二、生命周期:三、挂载阶段(constructor > render > componentDidMount):四、更新阶段(render > componentDidUpdate):五、卸载阶段(componentWillUnmount …...
CRM系统哪些功能可以个性化定制?
不同的企业有着不同的业务流程和需求,因此在选型时就需要一款可以个性化定制的CRM系统。下面说说可以个性化定制的CRM系统的功能和优势。 如何实现个性化定制? Zoho CRM支持个性化定制,您可以创建自定义功能模块、字段以及业务流程…...
51单片机(普中HC6800-EM3 V3.0)实验例程软件分析 实验二 LED闪烁
目录 前言 一、原理图及知识点介绍 二、代码分析 知识点四:delay(u16 i)这个函数为什么i1时,大约延时10us? 前言 已经是第二个实验了,上一个实验是点亮第一个LED灯,这个实验是LED的闪烁。 一、原理图及知识点介绍…...
PaperEdge 文档图像矫正
效果 地址: https://github.com/cvlab-stonybrook/PaperEdge...
入门NLTK:Python自然语言处理库初级教程
NLTK(Natural Language Toolkit)是一个Python库,用于实现自然语言处理(NLP)的许多任务。NLTK包括一些有用的工具和资源,如文本语料库、词性标注器、语法分析器等。在这篇初级教程中,我们将了解N…...
Android 死机问题学习笔记
和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、死机系统简图二、死机的可能原因三、死机问题需要分析哪些数据四 、Java Backtrace 分析五、常见 Java backtrace 举例六、Native Backtrace七、Ke…...
企业内网终端安全无客户端准入控制技术实践
终端无代理/无客户端准入控制技术因其良好的用户体验而倍受创新企业的青睐。无代理/无客户端准入控制技术,顾名思义,是一种在网络中对终端实施访问控制的方法,无需依赖特定的客户端软件。 不同于银行、医院等传统行业的终端准入控制需求&…...
Android 开发代码规范
一. AndroidStudio开发工具规范 使用最新的稳定版本.统一文件的编码格式为utf-8. 清除每个类里面的无效的import导包.代码样式统一,比如,tab缩进4个空格,或者 tab size等如果没有特殊情况使用默认的配置即可。每行字数每行字符数不得超过 160 字符&…...
看AI如何为历史着色:cv_unet_image-colorization 上色作品精彩分享
看AI如何为历史着色:cv_unet_image-colorization 上色作品精彩分享 1. 当黑白照片遇见AI色彩魔法 翻开泛黄的老相册,那些定格在黑白胶片里的历史瞬间总是让人浮想联翩:奶奶年轻时的碎花裙到底是什么颜色?爷爷参军时的军装是深绿…...
Warshall’s Algorithm: Exploring Transitive Closure with Matrix Operations
1. 从零理解Warshall算法与传递闭包 第一次听说Warshall算法时,我正为了解决一个社交网络中的好友推荐问题而头疼。简单来说,我需要判断用户A是否可以通过共同好友的链条认识用户B。这种"关系的传递性"问题,正是Warshall算法的拿手…...
终极指南:TDC治疗科学人工智能平台核心功能与实战应用解析
终极指南:TDC治疗科学人工智能平台核心功能与实战应用解析 【免费下载链接】TDC Therapeutics Commons (TDC): Multimodal Foundation for Therapeutic Science 项目地址: https://gitcode.com/gh_mirrors/tdc/TDC TDC(Therapeutics Commons&…...
16.5【保姆级教程】C11对齐特性详解:比位填充更自然,底层开发必学
📢 关注博主不迷路!CSDN最细C11对齐特性教程来袭🔥 继位字段之后,解锁C语言底层内存控制新技能——C11对齐特性,比传统位填充字节更自然、更规范,吃透它,轻松搞定硬件相关开发难点,刚…...
前端开发技术演进:一个小小开发者的浅显思考
写在前面! 3.3章节、3.4章节、4.2章节、6.2章节、大白话凝练等处有求于AI。 本文系个人浅见,疏漏之处在所难免,恳请各位方家不吝赐教。路漫漫其修远兮,吾将上下而求索。 作为一名在前端开发领域摸爬滚打小有几年的开发者ÿ…...
【高届数土木会议】第十届土木建筑与结构工程国际学术会议(I3CSE 2026)
第十届土木建筑与结构工程国际学术会议(I3CSE 2026) 2026 10th International Conference on Civil Construction and Structural Engineering 广东省岩土力学与工程学会、华南农业大学主办 高届数EI会议,见刊检索稳定 会议官网: 第十届土木建筑与结构工程国际学术会议(…...
YOLO12消防应急实战:烟雾火焰检测+逃生通道识别双模部署
YOLO12消防应急实战:烟雾火焰检测逃生通道识别双模部署 1. 引言:当AI成为消防员的“火眼金睛” 想象一下,在一个大型商场或工厂里,火灾初期的烟雾刚刚升起,一个无形的“眼睛”瞬间就捕捉到了这一异常,同时…...
Qwen3.5-35B-A3B-AWQ-4bit部署避坑指南:OOM排查、日志定位、端口检查全流程
Qwen3.5-35B-A3B-AWQ-4bit部署避坑指南:OOM排查、日志定位、端口检查全流程 1. 模型概述与部署挑战 Qwen3.5-35B-A3B-AWQ-4bit是一个面向视觉多模态理解的量化模型,支持图片理解、图文问答、视觉描述等能力。该模型特别适合图片分析、图中内容理解和图…...
深入解析x64驱动模块遍历:从_LDR_DATA_TABLE_ENTRY到实战应用
1. 理解_LDR_DATA_TABLE_ENTRY结构 在Windows内核中,每个加载的驱动模块都会对应一个_LDR_DATA_TABLE_ENTRY结构体。这个结构体就像是驱动模块的"身份证",包含了模块的关键信息。我们可以把它想象成一个快递包裹的标签——标签上写着包裹从哪里…...
nlp_structbert_sentence-similarity_chinese-large保姆级教程:错误日志排查与常见报错解决方案
nlp_structbert_sentence-similarity_chinese-large保姆级教程:错误日志排查与常见报错解决方案 1. 工具简介:你的中文句子相似度分析助手 nlp_structbert_sentence-similarity_chinese-large 是一个专门处理中文句子相似度的强大工具。它基于阿里达摩…...
