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进行匹配。列了一下几点区别:

  1. resource后不跟内容时,默认是按照name进行匹配,而resource默认是按照name匹配。若指定了name或则type则按照指定类型匹配。若按照指定类型,无法匹配到bean,则报错。
  2. 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的常用注解相关推荐

  1. 一文搞懂 Spring JPA

    作者 | 阿文 责编 | 屠敏 什么是 JPA 大家好,今天我和大家聊一下关于Spring JPA 的相关知识,我们先来了解下什么是 JPA ? JPA (Java Persistence API) ...

  2. 一文搞懂Spring,堪称Spring源码终结者

    Spring的影响力想必无需与大家多说,如果你用spring,那么读读源码有助于对你最重要的工具的理解,好的框架源码也可以帮助我们理解什么是好代码. 刚参加工作那会,没想过去读源码,更没想过去改框架的 ...

  3. 一文搞懂Spring AOP源码底层原理

    一.什么是AOP 与OOP对比,AOP是处理一些横切性问题,这些横切性问题不会影响到主逻辑实现的,但是会散落到代码的各个部分,难以维护.一键获取源码地址spring aop面试题 AOP就是把这些问题 ...

  4. 接近8000字的Spring/SpringBoot常用注解总结!安排!

    文章目录 0.前言 1. `@SpringBootApplication` 2. Spring Bean 相关 2.1. `@Autowired` 2.2. `Component`,`@Reposit ...

  5. 近100个Spring/SpringBoot常用注解汇总!

    作者 | Guide 来源 | JavaGuide(微信公众号) 毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我 ...

  6. Spring/Spring Boot 常用注解总结

    0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用法,掌握搞懂,使用 SpringBoot ...

  7. Spring/SpringBoot常用注解总结!

    0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用法,掌握搞懂,使用 SpringBoot ...

  8. 一文搞懂 Python 的 import 机制

    一.前言 希望能够让读者一文搞懂 Python 的 import 机制 1.什么是 import 机制? 通常来讲,在一段 Python 代码中去执行引用另一个模块中的代码,就需要使用 Python ...

  9. python语言语句快的标记是什么_一文搞懂Python程序语句

    原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...

最新文章

  1. Android性能优化:手把手教你如何让App更快、更稳、更省(含内存、布局优化等)...
  2. Python 技术篇-用smtplib和email库实现邮件发送并展示本地图片实例演示
  3. linux——不同系统间的文件传输和打包压缩
  4. 异常的分级分类与处理策略
  5. 简单理解 Kafka 的消息可靠性策略
  6. tp5分布式redis_TP5通过缓存数据到Redis
  7. 下载: 虾米音乐_您所说的内容:如何组织凌乱的音乐收藏
  8. [蓝桥杯][2013年第四届真题]买不到的数目-模拟,数论
  9. jsfor循环终止_js 终止 forEach 循环
  10. 多个excel文件内容合并到一个excel文件的多个sheet的小程序
  11. 012-Java有几种文件拷贝方式?哪一种最高效?
  12. xshell 无法定位输入点_linux基础知识个人总结
  13. php psd图层重命名,ps批量修改图层名字的脚本(附批量替换方法)
  14. Markdown - 语法简介
  15. Designing an Encoder for StyleGAN Image Manipulation论文解读
  16. WebRTC系列-RTCDataChannel发送非音视频数据
  17. Vi编辑器的常用命令1(文件内操作)
  18. 海明校验码原理(详解)
  19. [量化-025]某投资者的投资策略统计整理
  20. 如何对EXCEL数值做累加

热门文章

  1. (不定期更新)《人工智能AI资讯》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+人工智能+AlphaGo+神经网络+深度学习+机器学习+自动驾驶+图像识别+立钻哥哥+==)
  2. 计算机系大学生求职信,计算机专业大学毕业生求职信范文
  3. 数据库sql组合和切割函数
  4. Vue 组件学习总结
  5. Fabric 1.0源代码分析(28) Orderer #localconfig(Orderer配置文件定义)
  6. 车辆协同定位论文review
  7. Web前端开发规范手册-阿里云
  8. pdf 密码去除 pdf转为word
  9. 两百行C++代码实现yolov5车辆计数部署(通俗易懂版)
  10. java实现定时任务 schedule_Java定时任务调度详解