Spring之更便捷的读取和存储对象

目录

  • 简洁的Spring读取和存储对象方式
    • 存储Bean对象
      • 前置工作——配置扫描路径
      • 存储Bean对象的注解
        • 类注解
        • 方法注解
    • 读取Bean对象
      • 属性注入——Autowired
      • 构造方法注入
      • Setter注入
      • Autowired和Resources的区别

简洁的Spring读取和存储对象方式

存储Bean对象

相较于通过创建上下文,获取上下文后将bean对象存储到Spring容器这种方式,使用注解更加方便.

前置工作——配置扫描路径

在使用注解前,我们需要配置扫描待添加注解的文件位置.
Spring之更便捷的读取和存储对象_第1张图片

存储Bean对象的注解

将bean对象存储到Spring中的注解可以分为两种类型

  1. 类注解:@Controller,@Service,@Repository,@Component,@Configuration
  2. 方法注解:@Bean

类注解

@Controller:控制器存储
Spring之更便捷的读取和存储对象_第2张图片
@Service:服务存储
Spring之更便捷的读取和存储对象_第3张图片
@Repository:仓库存储
Spring之更便捷的读取和存储对象_第4张图片
@Component:组建存储
Spring之更便捷的读取和存储对象_第5张图片

@Configuration
Spring之更便捷的读取和存储对象_第6张图片
从上述的使用过程中可以看到每一个注解的使用方式都是类似的.但为什么还需要这么多的注解呢? 为了让程序员能够更直观地了解每一个类的用途
程序的工程分层如下:Spring之更便捷的读取和存储对象_第7张图片
通过图可以看到@Configuration是负责配置文件的控制,@Controller是负责验证前端传来的参数,@Service是负责处理前端传来的参数,@Repository是负责存储前端传来的参数,并和数据库进行交互.而@Component则负责一些工具类.
在这五种类注解中,@Component是其他所有注解的父类.

方法注解

方法注解@Bean,顾名思义涵盖的对象是一个具体的方法.但单纯使用@Bean是无法将bean对象存储到Spring中的,需要搭配类注解共同使用
在使用@Bean时,我们可以设置name属性给bean对象重命名
Spring之更便捷的读取和存储对象_第8张图片在这里插入图片描述

读取Bean对象

属性注入——Autowired

利用@Autowired注解将对象以属性的形式注入Spring之更便捷的读取和存储对象_第9张图片

构造方法注入

利用@Autowired将对象以构造方法的形式注入
Spring之更便捷的读取和存储对象_第10张图片

Setter注入

利用@Autowired将对象以Setter形式注入
Spring之更便捷的读取和存储对象_第11张图片
三种注入方式的对比

  1. 属性注入最简洁,使用方便.缺点是只适用于IoC容器,对于非IoC容器,在运行时会报空指针异常.
  2. 构造方法注入:Spring最推荐的一种注入方式,通用性强,在使用前保证注入的类不为空.缺点是当存在多个注入时会造成构造方法的臃肿
  3. Setter方法注入:Spring早期推荐的一种注入方式.在通用性方面不如构造方法

Autowired和Resources的区别

在进行类注入时,除了@Autowired以外,还有了另外一种注解@Resources.
二者的区别

  1. Autowired来自于Spring,Resources来自于jdk
  2. Autowired注解几乎不支持参数设置,而Resources支持更多的参数设置.这也意味着当一个类中使用多个@Bean存储同一个类对象时,在另一个类中如果只使用@Autowired会报错.解决方式是用@Resources注解搭配参数name属性去指定注入的对象.也可以使用@Qualifier去弥补@Autowired注解参数的问题:利用@Qualifier注解定义类的名称Spring之更便捷的读取和存储对象_第12张图片
    Spring之更便捷的读取和存储对象_第13张图片

你可能感兴趣的:(Spring,spring,java,spring,boot)