一文搞懂spring的常用注解
spring传统做法是使用xml文件对bean进行注入和配置。通过使用spring提供的注解,可以极大的降低配置xml文件的繁琐。本文将介绍常用的注解。
一@Autowired
Autowired意为:自动装配。它是按照类型进行匹配,在容器中查找匹配的bean,将其注入到autowired标注的变量中。目的是为了消除java代码块中的set和get方法。但是当遇到匹配不到所需要bean时,会报错,若我们不想让spring报错,而是显示null,需要设置autowired的属性为false。即:@Autowired(required=false)
如:定义一个类Animal,它有属性monkey,正常的使用,需要在Animal中定义该属性,再通过set和get方法,为属性赋值。但是使用autowired以后,就可以省掉了。
private Dog dog; public void setDog(Dog dog) { this.dog = dog; } public Dog getDog() { return dog; } //替换为下边方式使用 @Autowired private Dog dog;
二、Qualifier
Qualifier用于指定注入bean的名称。
这个注解一般和autowired搭配使用,它的使用场景为:如果匹配的bean为一个以上,spring是不知道你要具体哪个bean的,这时可以通过Qualifier指明要注入的bean。如:
@Autowired @Qualifier("smalldog") private Dog dog;
三、 Resource
resource注解与autowired非常类似,都是bean的注入。区别是resource可以指定name或则type进行匹配。列了一下几点区别:
- resource后不跟内容时,默认是按照name进行匹配,而resource默认是按照name匹配。若指定了name或则type则按照指定类型匹配。若按照指定类型,无法匹配到bean,则报错。
- autowired属于spring的注解,resource属于j2ee注解。即resource属于java,autowired属于spring,使用时需要引入spring的包。
@Resource(name = "smalldog") private Dog dog; @Resource(type = Dog.class) private Dog dog;
四、 Service
service标签用于对应业务层的bean,若不指定name,则默认为类名首字母小写。若指定name,则意味着,告诉spring,创建该bean的实例时,bean的名字必须为指定的这个name。如:
@Service("dogService") public class DogServiceImpl implements DogService{ 注入是,使用resource,如: @Resource(name="dogService") private DogService dogService;
五、 Repository
repository用于数据访问层的bean。样例如下:
@Repository(value = "dogDao") public class DogDaoImpl implements AnimalDaoImpl{ @Resource private AnimalDaoImpl dogDao;
总结:@Service 用于标注业务层,@Repository 用于标注数据访问层,@Controller 用于标注控制层,当不好分层时,可使用@Component。@Scope("singleton")表示单例,prototype表示原型,每次都会new一个新的出来,作用在类上。
一文搞懂spring的常用注解相关推荐
- 一文搞懂 Spring JPA
作者 | 阿文 责编 | 屠敏 什么是 JPA 大家好,今天我和大家聊一下关于Spring JPA 的相关知识,我们先来了解下什么是 JPA ? JPA (Java Persistence API) ...
- 一文搞懂Spring,堪称Spring源码终结者
Spring的影响力想必无需与大家多说,如果你用spring,那么读读源码有助于对你最重要的工具的理解,好的框架源码也可以帮助我们理解什么是好代码. 刚参加工作那会,没想过去读源码,更没想过去改框架的 ...
- 一文搞懂Spring AOP源码底层原理
一.什么是AOP 与OOP对比,AOP是处理一些横切性问题,这些横切性问题不会影响到主逻辑实现的,但是会散落到代码的各个部分,难以维护.一键获取源码地址spring aop面试题 AOP就是把这些问题 ...
- 接近8000字的Spring/SpringBoot常用注解总结!安排!
文章目录 0.前言 1. `@SpringBootApplication` 2. Spring Bean 相关 2.1. `@Autowired` 2.2. `Component`,`@Reposit ...
- 近100个Spring/SpringBoot常用注解汇总!
作者 | Guide 来源 | JavaGuide(微信公众号) 毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我 ...
- Spring/Spring Boot 常用注解总结
0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用法,掌握搞懂,使用 SpringBoot ...
- Spring/SpringBoot常用注解总结!
0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用法,掌握搞懂,使用 SpringBoot ...
- 一文搞懂 Python 的 import 机制
一.前言 希望能够让读者一文搞懂 Python 的 import 机制 1.什么是 import 机制? 通常来讲,在一段 Python 代码中去执行引用另一个模块中的代码,就需要使用 Python ...
- python语言语句快的标记是什么_一文搞懂Python程序语句
原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...
最新文章
- Android性能优化:手把手教你如何让App更快、更稳、更省(含内存、布局优化等)...
- Python 技术篇-用smtplib和email库实现邮件发送并展示本地图片实例演示
- linux——不同系统间的文件传输和打包压缩
- 异常的分级分类与处理策略
- 简单理解 Kafka 的消息可靠性策略
- tp5分布式redis_TP5通过缓存数据到Redis
- 下载: 虾米音乐_您所说的内容:如何组织凌乱的音乐收藏
- [蓝桥杯][2013年第四届真题]买不到的数目-模拟,数论
- jsfor循环终止_js 终止 forEach 循环
- 多个excel文件内容合并到一个excel文件的多个sheet的小程序
- 012-Java有几种文件拷贝方式?哪一种最高效?
- xshell 无法定位输入点_linux基础知识个人总结
- php psd图层重命名,ps批量修改图层名字的脚本(附批量替换方法)
- Markdown - 语法简介
- Designing an Encoder for StyleGAN Image Manipulation论文解读
- WebRTC系列-RTCDataChannel发送非音视频数据
- Vi编辑器的常用命令1(文件内操作)
- 海明校验码原理(详解)
- [量化-025]某投资者的投资策略统计整理
- 如何对EXCEL数值做累加
热门文章
- (不定期更新)《人工智能AI资讯》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+人工智能+AlphaGo+神经网络+深度学习+机器学习+自动驾驶+图像识别+立钻哥哥+==)
- 计算机系大学生求职信,计算机专业大学毕业生求职信范文
- 数据库sql组合和切割函数
- Vue 组件学习总结
- Fabric 1.0源代码分析(28) Orderer #localconfig(Orderer配置文件定义)
- 车辆协同定位论文review
- Web前端开发规范手册-阿里云
- pdf 密码去除 pdf转为word
- 两百行C++代码实现yolov5车辆计数部署(通俗易懂版)
- java实现定时任务 schedule_Java定时任务调度详解