目录
一、Spring Framework 系统架构
二、核心容器Core Container
(1)IoC(Inversion of Control)控制反转 和 DI(Dependency Injection)依赖注入
(2)IoC容器
1.导入Spring的坐标
2.写配置文件ApplicationContext.xml (禁止更改)
3、在主函数初始化IoC容器,并且调用Bean
(3)DI关系绑定
1. 首先基于IoC管理Bean,这一步在上一级目录IoC容器(已完成)
2.删除Dao对象(已完成)
3.提供依赖对象对应的setter方法(主要)
4.service和dao01关系的描述(主要)
一、Spring Framework 系统架构
学习顺序
二、核心容器Core Container
(1)IoC(Inversion of Control)控制反转 和 DI(Dependency Injection)依赖注入
第一:IoC
在使用对象时,不在主动new一个对象,这个对象由外部提供 。在这个过程中,对象创建控制权由程序改为外部。 ——控制反转
????? Spring如何实现控制反转????
1.Spring提供一个容器,成为IoC容器,来充当IoC思想的外部
2.IOC容器负责对象的创建、初始化等工作,被创建的对象或者被管理的对象,被称为Bean
这里面的service和dao这两个对象统称为Bean
第二:DI
在容器中在、创建Bean和Bean之间依赖关系的整个过程称为依赖注入。
详细:
(2)IoC容器
1.导入Spring的坐标
org.springframework
spring-context
5.2.12.RELEASE
2.写配置文件ApplicationContext.xml (禁止更改)
例如:本程序中的两个类为
dao01:(我改dao为dao01)
service:
在配置文件中这样配置:
文件名:
ApplicationContext.xml (禁止更改)
3、在主函数初始化IoC容器,并且调用Bean
这里面的创建容器对象通用。
//3.加载配置文件,获取容器的对象 这一行代码通用,不用记忆
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml") ;
//4.获取Bean getBean("Bean名")方法来获取Bean对象
dao01 dao = (dao01) ctx.getBean("dao");
service01 service = (service01) ctx.getBean("service");
String s = dao.dateDao();
String s1 = service.dateService();
System.out.println(s+s1);
此时,我们运行在其他类运行就不用创建对象了,而是直接在主方法里面来从IoC中获取。
(3)DI关系绑定
我们先看下两个方法里面的内容
dao01:
service:
这是上一目录IoC里面的两个方法,此时我们对,service进行改动,把 new dao01()去掉。
即:
此时如果在运行的主方法肯定是空指针异常,因为缺少了dao01的对象。
如何改动配置文件,来运行这个程序呢????
1. 首先基于IoC管理Bean,这一步在上一级目录IoC容器(已完成)
2.删除Dao对象(已完成)
3.提供依赖对象对应的setter方法(主要)
package com.wrx.service;
import com.wrx.Dao.dao01;
public class service01 {
// 删除这个类中的new的Dao的对象
private dao01 dao;
public String dateService(){
System.out.println("dao01....");
String s = dao.dateDao();
return s;
}
// 创建setter方法:容器在执行这个setter方法
public void setDao(dao01 dao) {
this.dao = dao;
}
}
4.service和dao01关系的描述(主要)
3.提供依赖对象对应的setter方法(主要)
package com.wrx.service;
import com.wrx.Dao.dao01;
public class service01 {
// 删除这个类中的new的Dao的对象
private dao01 dao;
public String dateService(){
System.out.println("dao01....");
String s = dao.dateDao();
return s;
}
// 创建setter方法:容器在执行这个setter方法
public void setDao(dao01 dao) {
this.dao = dao;
}
}
4.service和dao01关系的描述(主要)
视频截图:(参照作用)
程序实例:
配置文件:(核心)
此时关系绑定好了,可以运行。



