Spring Core 学习 IOC容器与DI深入理解
文章目录
前言
Spring Core:
Spring 的核心功能:IOC容器,解决对象创建及依赖关系。
Spring的核心思想之一:Inversion of Control,控制反转 IOC,对象的创建交给外部容器来完成,这个就称之为控制反转。
- Spring 使用控制反转来实现对象不需要再程序中写死
- 控制反转解决问题处理问题【把对象交给别人来创建】
对象与对象之间的依赖关系通过 dependency injection 依赖注入解决
- Spring 使用依赖注入来实现对象直接的依赖关系
- 在创建完对象之后,对象的依赖关系处理即是依赖注入
无论是创建对象、处理对象之间的依赖关系、对象创建的时间还是要创建对象的数量,我们都是在Spring 为我们提供的IOC 容器上配置对象的信息即可。IOC的思想最核心的地方在于,资源不由要使用资源的双方管理,而是由不使用资源的第三方来管理,一是可以实现资源的集中管理,二是可以降低使用资源双方的依赖程度,低耦合。
一、Core模块入门
1. 新建Spring项目
- 使用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表达式
- 准备Spring的配置文件按
在resources 目录下创建spring的配置文件,可以直接选择idea 中的选项
- 编写启动类
在java 文件夹下新建启动类Application
,可以通过两种方式得到Spring的 IOC 容器对象:1通过Bean 工厂,BeanFactory;2通过Resource 获取BeanFactory (常用)
2. IOC容器与对象创建
- 获取到了IOC容器,通过IOC容器配置对象
在Spring 中总体来看, 可以通过四种方式来配置对象
- 使用XML 文件来配置
- 使用注解来配置
- 使用JavaConfig 来配置
- 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=