IOC容器与DI注入

本文详细介绍了Spring Core中的IOC容器和DI依赖注入。从新建Spring项目开始,逐步讲解如何通过XML、注解配置bean,以及如何通过构造函数、set方法、自动装配等方式处理对象依赖。此外,还探讨了bean的scope属性、lazy-init懒加载和init-method初始化方法等细节。
摘要由CSDN通过智能技术生成

Spring Core 学习 IOC容器与DI深入理解



前言

Spring Core:

Spring 的核心功能:IOC容器,解决对象创建及依赖关系。

Spring的核心思想之一:Inversion of Control,控制反转 IOC,对象的创建交给外部容器来完成,这个就称之为控制反转。

  • Spring 使用控制反转来实现对象不需要再程序中写死
  • 控制反转解决问题处理问题【把对象交给别人来创建】

对象与对象之间的依赖关系通过 dependency injection 依赖注入解决

  • Spring 使用依赖注入来实现对象直接的依赖关系
  • 在创建完对象之后,对象的依赖关系处理即是依赖注入

  无论是创建对象、处理对象之间的依赖关系、对象创建的时间还是要创建对象的数量,我们都是在Spring 为我们提供的IOC 容器上配置对象的信息即可。IOC的思想最核心的地方在于,资源不由要使用资源的双方管理,而是由不使用资源的第三方来管理,一是可以实现资源的集中管理,二是可以降低使用资源双方的依赖程度,低耦合。

在这里插入图片描述


一、Core模块入门

1. 新建Spring项目

  1. 使用IDEA创建一个maven项目,在pom.xml中引入对应的jar包

  commons-logging-1.1.3.jar 日志、spring-beans-5.2.21.RELEASE.jar bean节点、spring-context-5.2.21.RELEASE.jar spring上下文节点、spring-core-5.2.21.RELEASE.jar spring核心功能、spring-expression-5.2.21.RELEASE.jar spring表达式

  1. 准备Spring的配置文件按

  在resources 目录下创建spring的配置文件,可以直接选择idea 中的选项
在这里插入图片描述

  1. 编写启动类

  在java 文件夹下新建启动类Application,可以通过两种方式得到Spring的 IOC 容器对象:1通过Bean 工厂,BeanFactory;2通过Resource 获取BeanFactory (常用)
在这里插入图片描述

2. IOC容器与对象创建

  1. 获取到了IOC容器,通过IOC容器配置对象

在Spring 中总体来看, 可以通过四种方式来配置对象

  1. 使用XML 文件来配置
  2. 使用注解来配置
  3. 使用JavaConfig 来配置
  4. groovy 脚本DSL

  准备一个User类,先不指定构造方法,在xml中配置

<!--使用bean节点来创建对象, id对象属性标识符, class关联类-->
<bean id="user" class="User"></bean>

通过IOC容器得到无参构造方法对象完成
在这里插入图片描述
Java中几种常用的创建对象方法有:无参构造器创建、有参构造器创建、工厂模式创建(静态方法、非静态方法)

// 创建带参的构造函数
public User(String id, String username) {
   
    this.id = id;
    this.username = username;
}
<!--xml中也要传入构造函数中对应的参数-->
<bean id="user" class="User">
    <!--通过constructor这个节点来指定构造函数的参数类型、名称、第几个-->
    <constructor-arg index="0" name="id" type="java.lang.String" value="01"></constructor-arg>
    <constructor-arg index="1" name="username" type="java.lang.String" value="zhoukang"></constructor-arg>
</bean>

在这里插入图片描述

<bean id="person"></bean>

<!--如果构造函数中的对象是引用类型, 则需要用到ref 属性指向-->
<bean id="user" class="User">
	<constructor-arg index="0" name="id" type="java.lang.String" value="01"></constructor-arg>
	<constructor-arg index="1" name="username" type=
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值