Spring基础 bean基础 | DAY 8

本文详细介绍了Spring框架中的核心概念,包括Spring的核心容器、AOP编程、依赖注入(DI)及其应用,如setter和构造器注入、自动装配以及如何配置Bean,涵盖了Bean的创建、命名、作用域和生命周期管理。
摘要由CSDN通过智能技术生成

- Spring概念

Spring最常用的有如下三种 我们详细说下第一种  spring framework中又包含了许多

Spring Framework  

  • core container 核心容器  

  • AOP 面向切面编程

  • Aspects AOP思想实现

  • Date Acess 数据访问

  • Date Integration数据集成

  • Web web开发

  • Test 单元测试 集成测试

Spring Boot 

Spring cloud 

- Spring引入带来了哪些好处?

  • 解耦 我们知道在实际业务开发中 耦合度越低越好 这样当程序有一处需要修改 就可以减少修改的地方 减少bug出现  所以在Spring中 通过 IOC 容器,将对象之间的依赖关系交给 Spring 来管理,降低了对象之间的耦合度。
  • AOP编程支持:提供了面向切面编程的支持,方便处理一些具有横切性质的系统级服务,如事务管理、日志记录等。
  • 易于测试:junit4 测试比较高效 而Spring 对 JUnit4 提供了良好的支持 所以使得编写单元测试和集成测试变得非常简单。
  • 简化开发 在spring中提供了许多高效成熟的框架 所以能帮助省去繁琐的步骤

- 什么是AOP?

AOP 是一种编程范式,允许开发者定义横切关注点,这些关注点会跨越多个对象和方法。

在 Spring 中,AOP 主要用于实现日志记录、事务管理、安全控制等。

- 什么是IOC?(控制反转 )

使用对象时不主动使用new产生对象 转换为由外部提供对象

对象的创建控制权由程序转移到外部 这种思想称为控制反转

创建控制权转移->控制反转 

IoC容器 (Spring提供)

步骤

  1. 导入Spring坐标
  2. 定义Spring管理的类(接口)
  3. 创建spring配置文件 配置对应类作为Spring管理的bean
  4. 初始化ioc容器 通过容器获取bean

- 什么是Bean?

IOC容器 中

负责对象的创建 初始化等一系列工作 被创建或被管理的对象在Ioc容器统称为Bean

- Bean是如何创建的?实例化bean的三种方式是什么?

  • 使用默认构造函数:Spring 默认使用无参构造函数来创建 Bean 实例。

bean本质就是对象 创建bean对象使用构造方法 默认调用无参构造方法 如果没有就会报错

  • 使用静态工厂方法:通过在配置文件中指定静态工厂方法来创建 Bean。

在bean标签里面 class填写工厂类 添加 factory-method 等于 工程类中获取对象的方法

静态工厂:与通过new关键字直接调用构造函数创建对象的方式不同,静态工厂是通过调用一个类的静态方法来获取该类的实例。

  • 使用实例工厂方法:通过在配置文件中指定实例工厂方法来创建 Bean。

实例工厂:指工厂提供的方法服务是非static的,即需要自己创建工厂对象,然后通过这个工厂对象去调用其中的方法或服务。

首先 在bean中创造工厂的对象造出来 然后再写一个bean 添加factory-bean属性 添加factory-method属性 

改良:创建一个工厂bean类 implements FactoryBean接口 泛型中填入对象类型 实现接口函数 如果想控制对象是否单例 可以添加 isSingleton方法

bean 配置

在标签bean中 name起别名 可以起多个别名 允许使用分号或空格隔开 

别名在 getbean(中可以使用 ) ref中也可以使用       等等 别名范围很大

bean的作用范围  Spring默认创建对象为单例对象 需要添加属性 scope 为prototype (如此创建多个对象不为单个)

- 普通对象怎么才能变成bean?

首先你需要一个类

然后在Spring的配置文件中使用<bean>标签配置对象

如果需要的话 还需要添加<property>标签配置属性

例如 在<property>中 name属性表示配置哪一个具体的属性 ref表示参照哪一个bean

- 描述一下Bean生命周期

bean从创建到销毁的过程

bean标签 添加 init-method属性 destroy-method属性(需要关闭容器才能启动该方法  一般设置关闭钩子  registerShutdownHook 即关闭虚拟机关闭之前 自动关闭容器)

或者添加初始化销毁接口 InitializingBean DisposableBean 实现对应方法

所以bean生命周期过程可以分为

  • 初始化容器
  1. 创建对象(分配内存)
  2. 执行构造方法 
  3. 执行属性注入
  4. 执行bean初始化方法
  • 使用bean
  1. 执行业务操作
  • 关闭容器
  1. 执行bean销毁方法

- 依赖注入

DI 在容器中建立bean与bean之间的依赖关系的整个过程 称为依赖注入

- setter注入

  • 引用类型

在bean中定义引用类型属性并提供可供访问的set方法 配置中使用property标签ref属性注入引用类型对象

  • 简单类型

在bean中定义引用类型属性并提供可访问的set方法 配置中使用propertity标签value属性注入简单类型数据

- 构造器注入(Spring框架倡导使用 相对严谨)

简单类型 constructor-arg 标签 name属性 value属性 name为形参名称 

引用类型 constructor-arg 标签 name属性 ref属性 注意name为形参名称 

以上为标准书写 耦合度较高

避免较高耦合度 name 可以使用 type属性 解决形参名称问题 但是多个形参需要区分类型

所以可以使用 index属性 确定第几个参数 解决参数类型重复问题使用位置解决参数匹配

- 自动装配

bean标签添加 autowire属性 

适用于引用类型 不能对简单类型进行操作

方式

按类型 byType (主要使用) 必须保证容器中相同类型的bean唯一

按名称 byName   必须保障容器中具有指定名称的bean  具有耦合性

按构造方法  不推荐   

- 集合注入

数组对象
<property name="array">
    <array>
        <value>  </value>
    </array>
</property>

List对象
<property name="list">
    <list>
        <value> </value>
     </list>
</property>

properties对象
<property name="properties">
    <props>
        <prop key=""> </prop>
     </props>
</property>

map对象
<property name="map">
    <map>
        <entry key="" value=""/>
     </map>
</property>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值