Spring更简单的实现Bean对象的存取(利用注解储存和注入Bean对象)(上)

简介: Spring更简单的实现Bean对象的存取(利用注解储存和注入Bean对象)(上)

一、前言:

上篇博客,我们讲了一个spring core项目的大致流程:

创建项目——》将对象储存到Spring容器中 ——》从Spring容器中取出Bean对象

但是吧,上篇讲的这些流程还是太繁琐了,有没有一个更简单的方式来实现对象的存取呢?

当然有,一起来看看吧!

首先,Spring项目的创建——这个没有什么好说的!就按我们上篇博客的步骤来进行。

但注意:与上篇博客相比,spring的配置文件发生了改变——为了更简单的实现Bean对象的存入(把对象存到spring中)


更改后的spring配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:content="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <content:component-scan base-package="在对象储存中,要扫描的路径"></content:component-scan>
</beans>


二、储存Bean对象

首先我们回忆下,我们执行储存Bean对象的方式。

之前我们存储 Bean 时,需要在 spring-config 中添加⼀⾏ bean 注册内容才⾏,如下图所示:

73e81df469f9451e9ade794c9c730029.png

这种存入 Bean 的方式,并不是很好!

1、需要手动添加 bean 对象 到 配置文件中

2、如果 是配置文件中出现了问题,不好调试。


而现在我们不需要一个一个的在spring配置文件中添加我们要储存的Bean对象。我们直接:

8f29e097481b4139a47031729c8741d4.png

你以为把扫描路径添加到配置文件中就行了吗?

不你还需要再类中添加注解——再扫描的过程中,只有添加了注解的类才能成功存储到spring中

这就引起了我们注解的概念

一共有两者方法:

1、使用 5 大类注解实现

1、@Controller 【Controller - 控制器】

2、@Service 【service - 服务】

3、@Repository 【repository - 仓库】

4、@Configuration 【configuration - 配置/布局】

5、@Component 【component - 组件】

通过上述五大类注解中的任何一个,都可以将 bean 存储到 Spring 中。

2、通过 方法注解@Bean ,也可以将 一个 bean 存储到 Spring 中。


5大类注解

7b382a916ec847fb93c31d75d87e4859.png

上面我们用到了@Service注解,其他四个注解@Controller、@Repository也是一样的。


补充1:

既然这5大类注解的用法这么相似,那为啥还要分成5个不同的注解?统一弄成一个注解不好吗?

要解答这个问题,首先我们先要了解软件工程方面的知识

22336a880f7c4d71bf630fc7230f6f46.png


ec60319522b74ceab520e9e422114955.png


之所以讲这个 关于“软件分层” 的定义呢,就是为了 后面讲解 “为什么要有五大注解类” 做铺垫!

我们接着看


既然这5大类注解对应着软件分层中的不同层——他们各自要实现的功能是不同的。

这也就不难理解为啥要分成5大类中注解了,


补充2:

你可能还有一个疑惑:为什么?我们的 Spring 一定要有下面这个配置呢?

7c015c9b11bf49b3a0dd14c2d66368a2.png

如果没有这个配置,意味着什么??

大家可以想象一下:

一个 Spring 项目中,我们的类可分两种类型:

1、需要 进行 控制反转的类,将类的“生命周期”交给 Spring 来管理的类。【比如:UserController】

2、不需要存入 Spring 中的 类。


假设,我们有一个大型项目,需要存入 Spring 的 类 和 不需要存入 Spring 中的类,个数占比是五五开的。

这就会存在问题了!

如果我们没有 描述 根目录 的 这一行代码,
Spring 就会去扫描 所有的类,看看这些类中有哪些。


但是!项目中 需要存入 Spring 中的类,只占 50 %。

即:Spring 要浪费一倍的时间,去排查 不需要 存入 Spring 中的类。

所以,Spring 为了 提升效率,你必须要给我指定扫描的目录。
保证该目录下,一定是需要存入 Spring中的类。

这样 Spring就只需要扫描 对应目录中的类,就可以了!


@Bean方法注解

fc9b58fef6934a2997d5ce3662c0e73e.png

上面我们通过5大类注解还有Bean方法实现了简单往spring中存Bean对象。那么怎样实现简单的从spring中取Bean对象呢?


相关文章
|
9天前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
28 0
|
16天前
|
XML JSON Java
SpringBoot必须掌握的常用注解!
SpringBoot必须掌握的常用注解!
41 4
SpringBoot必须掌握的常用注解!
|
18天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
33 1
|
13天前
|
存储 安全 Java
springboot当中ConfigurationProperties注解作用跟数据库存入有啥区别
`@ConfigurationProperties`注解和数据库存储配置信息各有优劣,适用于不同的应用场景。`@ConfigurationProperties`提供了类型安全和模块化的配置管理方式,适合静态和简单配置。而数据库存储配置信息提供了动态更新和集中管理的能力,适合需要频繁变化和集中管理的配置需求。在实际项目中,可以根据具体需求选择合适的配置管理方式,或者结合使用这两种方式,实现灵活高效的配置管理。
10 0
|
6月前
|
存储 Java 数据库
Spring的使用-Bean对象的储存和获取/Bea对象的作用域与生命周期
Spring的使用-Bean对象的储存和获取/Bea对象的作用域与生命周期
|
设计模式 前端开发 Java
Spring Bean对象生命周期
Spring Bean对象生命周期
412 0
|
存储 Java Spring
【Spring原理探索】深入认识对象生命周期之BeanPostProcessor
【Spring原理探索】深入认识对象生命周期之BeanPostProcessor
137 0
【Spring原理探索】深入认识对象生命周期之BeanPostProcessor
|
Java Maven 开发者
Spring 对象生命周期示例|学习笔记
快速学习Spring 对象生命周期示例
126 0
Spring 对象生命周期示例|学习笔记
|
Java Spring 容器
Spring框架:第三章:对象的生命周期及单例bean生命周期的11个步骤
Spring框架:第三章:对象的生命周期及单例bean生命周期的11个步骤
118 0
|
Java 程序员 数据库
Spring对象的生命周期
Spring对象的生命周期
Spring对象的生命周期