[刘阳Java]_Spring IoC原理_第2讲
2024-08-27 16:41:21
Spring IoC(DI)是Spring框架的核心,所有对象的生命周期都是由它们来管理。对于弄懂Spring IOC是相当关键,往往我们第一次接触Spring IOC大家都是一头雾水。当然我们这篇文章会通过程序例子的方式来告诉大家。但是我不能说自己就相当专业,如果还有不懂的朋友们建议去看一下Spring的官方文档,或者是参考网上其他的一些博客。
1. Spring IOC的概念
- IOC(Inversion of Control,控制反转),所有的Java类(不管是JDK库中Java类,还是你自己定义Java类)都可以利用Spring框架来new它们的实例化对象
- Spring框架完成对Java类的初始化对象工作
- Spring来负责控制对象的生命周期和对象间的关系
2. Spring DI的概念
- DI(Dependency Injection,依赖注入),它主要作用是动态的向某个对象提供它所需要的其他对象
3. Spring IoC和DI 它们是否有区别吗?
- 我个人观点,其实Spring中IOC和DI其实概念一样
- IOC控制反转,所有的Java类的初始化工作扔给Spring框架。Spring框架充分利用Java反射
- DI依赖注入,一个Java类如果依赖其他Java类,则此类依赖另一个Java类的初始化工作也扔给Spring框架来完成。例如下面的描述可以帮助再次理解DI的核心功能
- 你可以通过从MVC分层开发角度去理解一下DI
- 在开发过程中,大家都知道Controller控制器依赖Service,假设整个Web开发过程中我们使用Spring框架,则Serivce的初始化工作Controller不用关心Service对象是如何创建的,Service创建过程扔给Spring框架
- DI和IOC程序实现的原理是什么
4. 上面确实是从我个人角度去理解和告诉大家什么是Spring IOC,下面开始我们的第一个Spring框架的程序。它能告诉你如何编写一个由Spring框架导向的Java程序
- 运行Spring框架首先要导入Spring相关的开发包。如果使用spring.4.0.3版本导包要包含(spring-core.jar, spring-beans.jar, spring-context.jar, spring-expression.jar, common-logging.jar)
- 创建一个Person的Java类
public class Person {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
- 创建一个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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="person" class="com.gxa.spring.day01.Person"></bean>
</beans>
- 创建一个测试程序来运行一段由Spring框架所管理的配置文件
package com.gxa.spring.test01; import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.gxa.spring.day01.Person; public class Test01 { @Test
public void m01() {
/**
* 运行Spring框架需要用到BeanFactory
* 1.BeanFactory帮助我们启动IOC容器
* 2.帮助我们找到需要实例化Java对象
*/
BeanFactorybeanFactory = new ClassPathXmlApplicationContext("spring.xml");
Person person = (Person) beanFactory.getBean("person");
person.setName("Hello World");
System.out.println(person.getName());
}
}
5. 上面的第一个Spring框架的代码,我这里简单的说明一下几个关键点
- 以后我们编写好的Java类都会在Spring的配置文件进行注册
- Spring配置文件就是一个容器工厂,它会在运行程序的时候检测配置文件中注入的Java类。当检测有Java类在配置文件中,那么Spring框架就会给这些Java类创建对象
- BeanFactory是Spring框架中的核心接口,在一个Java应用程序运行的时候,它帮助我们启动IoC容器,同时帮助我们找到需要实例化的Java对象
- 如何找到需要实例化的Java对象呢?通过BeanFactory接口中的getBean(String beanName)方法来实现
视频下载地址:https://pan.baidu.com/s/1eSDZwFg
最新文章
- DG - physical standby failover切换过程
- 【JSP】JSP检查字符串是否为数字
- flume服务的搭建
- SQL统计不重复字段的个数.
- TCP/IP-入门
- Eclipse图标含义
- ES6模块化
- jacascript JSON对象的学习
- QUARTZ系列之零:概述
- Robot Framework - Tips
- Scrapy(爬虫框架)中,Spider类中parse()方法的工作机制
- PV原语操作详解
- 关于使用maven打包如何聚合资源文件
- .net core 分布式配置中心
- Docker未启动错误:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
- 关于Verilog中的几种赋值语句
- BASIC-25_蓝桥杯_回形取数
- hibernate学习之一 框架配置
- LeetCode - 13. Roman to Integer - 思考if-else与switch的比较 - ( C++ ) - 解题报告
- linux下pthread_cancel无法取消线程的原因【转】