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. 【10分钟学Spring】:(二)一文搞懂spring依赖注入(DI)

    Spring最基础的特性就是创建bean.管理bean之间的依赖关系.下面通过具体实例演示该如何装配我们应用中的bean. Spring提供了三种主要的装配机制 在xml中进行显示的配置 在Java中 ...

  2. 这一次搞懂Spring事务注解的解析

    前言 事务我们都知道是什么,而Spring事务就是在数据库之上利用AOP提供声明式事务和编程式事务帮助我们简化开发,解耦业务逻辑和系统逻辑.但是Spring事务原理是怎样?事务在方法间是如何传播的?为 ...

  3. Spring第四天,BeanPostProcessor源码分析,彻底搞懂IOC注入及注解优先级问题!

  4. Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!

    本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...

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

    0.前言 大家好,我是 Guide 哥!这是我的 221 篇优质原创文章.如需转载,请在文首注明地址,蟹蟹! 本文已经收录进我的 75K Star 的 Java 开源项目 JavaGuide:http ...

  6. Spring/SpringBoot常用注解总结

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

  7. 一文搞懂vim复制粘贴

    转载自本人独立博客https://liushiming.cn/2020/01/18/copy-and-paste-in-vim/ 概述 复制粘贴是文本编辑最常用的功能,但是在vim中复制粘贴还是有点麻 ...

  8. 三文搞懂学会Docker容器技术(下)

    接着上面一篇:三文搞懂学会Docker容器技术(上) 三文搞懂学会Docker容器技术(中) 7,Docker容器目录挂载 7.1 简介 容器目录挂载: 我们可以在创建容器的时候,将宿主机的目录与容器 ...

  9. 一文搞懂所有Java集合面试题

    Java集合 刚刚经历过秋招,看了大量的面经,顺便将常见的Java集合常考知识点总结了一下,并根据被问到的频率大致做了一个标注.一颗星表示知识点需要了解,被问到的频率不高,面试时起码能说个差不多.两颗 ...

随机推荐

  1. String类的使用2

    /*String:字符串,使用一对""引起来表示.1.String声明为final的,不可被继承2.String实现了Serializable接口:表示字符串是支持序列化的. 实现 ...

  2. BUAA_OS lab4 难点梳理

    BUAA_OS lab4 难点梳理 lab4体会到了OS难度的飞升.实验需要掌握的重点有以下: 系统调用流程 进程通信机制 fork 本lab理解难度较高,接下来将以以上三部分分别梳理. 系统调用 概 ...

  3. 2020 OO 第一单元总结 表达式求导

    title: BUAA-OO 第一单元总结 date: 2020-03-19 20:53:41 tags: OO categories: 学习 OO第一单元通过三次递进式的作业让我们实现表达式求导,在 ...

  4. java面试一日一题:请讲下对mysql的理解

    问题:请讲下对mysql的理解 分析:该问题主要考察对mysql的理解,基本概念及sql的执行流程 回答要点: 主要从以下几点去考虑, 1.mysql的整体架构? 2.mysql中每一个组件的作用? ...

  5. Day17_104_IO_BufferReader接收用户输入

    BufferReader接收用户输入 **标准输入\输出流 java.lang.System** - static InputStream in - static PrintStream out im ...

  6. (数据科学学习手札118)Python+Dash快速web应用开发——特殊部件篇

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...

  7. 【秒懂音视频开发】18_详解YUV

    本文的主角是多媒体领域非常重要的一个概念:YUV. 简介 YUV,是一种颜色编码方法,跟RGB是同一个级别的概念,广泛应用于多媒体领域中. 也就是说,图像中每1个像素的颜色信息,除了可以用RGB的方式 ...

  8. math random模块

    math --- 数学函数 该模块提供了对C标准定义的数学函数的访问,返回值除非有明确说明,否则所有返回值均为浮点数 math.ceil(x) 返回 x 的上限,即大于或者等于 x 的最小整数. 如果 ...

  9. CPF 入门教程 - 属性和事件(七)

    CPF C#跨平台桌面UI框架 系列教程 CPF 入门教程(一) CPF 入门教程 - 数据绑定和命令绑定(二) CPF 入门教程 - 样式和动画(三) CPF 入门教程 - 绘图(四) CPF 入门 ...

  10. 1.5.1- HTML之相对路径

    网页需要图片,首先需要找到它.实际工作中,通常新建一个文件夹专门用于存放图像文件,这时插入图像,就需要采用"路径"的方式来制定图像文件的位置.路径可以分为相对路径与绝对路径. 相对 ...