一文搞懂spring的常用注解
spring传统做法是使用xml文件对bean进行注入和配置。通过使用spring提供的注解,可以极大的降低配置xml文件的繁琐。本文将介绍常用的注解。
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的常用注解的更多相关文章
- 【10分钟学Spring】:(二)一文搞懂spring依赖注入(DI)
Spring最基础的特性就是创建bean.管理bean之间的依赖关系.下面通过具体实例演示该如何装配我们应用中的bean. Spring提供了三种主要的装配机制 在xml中进行显示的配置 在Java中 ...
- 这一次搞懂Spring事务注解的解析
前言 事务我们都知道是什么,而Spring事务就是在数据库之上利用AOP提供声明式事务和编程式事务帮助我们简化开发,解耦业务逻辑和系统逻辑.但是Spring事务原理是怎样?事务在方法间是如何传播的?为 ...
- Spring第四天,BeanPostProcessor源码分析,彻底搞懂IOC注入及注解优先级问题!
- Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!
本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...
- 接近8000字的Spring/SpringBoot常用注解总结!安排!
0.前言 大家好,我是 Guide 哥!这是我的 221 篇优质原创文章.如需转载,请在文首注明地址,蟹蟹! 本文已经收录进我的 75K Star 的 Java 开源项目 JavaGuide:http ...
- Spring/SpringBoot常用注解总结
转自:[Guide哥] 0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用法,掌握搞懂,使 ...
- 一文搞懂vim复制粘贴
转载自本人独立博客https://liushiming.cn/2020/01/18/copy-and-paste-in-vim/ 概述 复制粘贴是文本编辑最常用的功能,但是在vim中复制粘贴还是有点麻 ...
- 三文搞懂学会Docker容器技术(下)
接着上面一篇:三文搞懂学会Docker容器技术(上) 三文搞懂学会Docker容器技术(中) 7,Docker容器目录挂载 7.1 简介 容器目录挂载: 我们可以在创建容器的时候,将宿主机的目录与容器 ...
- 一文搞懂所有Java集合面试题
Java集合 刚刚经历过秋招,看了大量的面经,顺便将常见的Java集合常考知识点总结了一下,并根据被问到的频率大致做了一个标注.一颗星表示知识点需要了解,被问到的频率不高,面试时起码能说个差不多.两颗 ...
随机推荐
- Web 前端 - 又不仅限于 Web 前端 - 协程锁问题
前言 最近两天的 web 前端开发中,早前的锁实现 (自旋锁) 出现了一些不合理的现象,所以有了这片随笔 什么是协程锁?能点进这个博客的的你肯定是明白的,不明白的人根本搜不到我这随笔,不多做赘述. 一 ...
- LiteOS内核源码分析:任务LOS_Schedule
摘要:调度,Schedule也称为Dispatch,是操作系统的一个重要模块,它负责选择系统要处理的下一个任务.调度模块需要协调处于就绪状态的任务对资源的竞争,按优先级策略从就绪队列中获取高优先级的任 ...
- ss 命令简介
1. 简介 ss 使用 netlink 与内核 tcp_diag 模块通信获取 socket 信息,用法和输出结果类似于 netstat 命令 语法格式如下 ss [options] [ FILTER ...
- 翻译:《实用的Python编程》08_01_Testing
目录 | 上一节 (7.5 装饰方法 | 下一节 (8.2 日志) 8.1 测试 多测试,少调试(Testing Rocks, Debugging Sucks) Python 的动态性质使得测试对大多 ...
- 201871030125-王芬 实验二 个人项目-《D{0-1}问题》软件项目报告
实验二 个人项目-<D{0-1}问题>软件项目报告 项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 ...
- vue 快速入门 系列 —— vue 的基础应用(下)
其他章节请看: vue 快速入门 系列 vue 的基础应用(下) 上篇聚焦于基础知识的介绍:本篇聚焦于基础知识的应用. 递归组件 组件是可以在它们自己的模板中调用自身的.不过它们只能通过 name 选 ...
- Java刷题-tree
一.分别按照二叉树先序,中序和后序打印所有的节点. 这道题就是书上的算法思想的实际使用,唯一需要特别注意到的是用递归的方式建树,还是比较巧妙的,因为一棵树的建立过程字符流是重复使用的,用递归的方式对根 ...
- 数据结构☞二叉搜索树BST
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它可以是一棵空树,也可以是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它 ...
- Go-27-import导包
import 导入包 包的搜索顺序: import ( "fmt" "net/http" "mypkg" ) 编译器会根据上面指定的相对路径 ...
- Appium 自动化测试框架:关键字驱动+数据驱动
1. 关键字驱动框架简介 2. 框架结构说明 3. 框架代码实现 action 包 page_action.py business_process 包 case_process.py data_so ...