Spring框架|控制反转IoC介绍|IoC环境搭建


一、控制反转介绍

(1)控制反转的概念

控制反转(Inversion of Control,即IoC):把对象的创建、初始化、销毁等工作交给框架,是框架的重要特征。并非面向对象编程的术语。控制反转包括依赖注入依赖查找

(2)容器

由于开发时需要创建很多对象,我们需要找个集合来存储,有Map和List供选择,有查找需求就选Map。所以应用加载时,创建一个Map,用于存放三层对象,将Map称之为容器

(3)工厂

工厂就是负责帮我们从容器中获取指定对象的类。使获取对象的方式发生了改变。

①之前我们获取对象时,采用new的方式,是主动的
在这里插入图片描述
②现在获取对象时,向工厂要对象,工厂为我们查找或创建对象,是被动的

在这里插入图片描述

(4)控制反转IoC的作用

削弱计算机程序的耦合,解除代码中的依赖关系。

二、spring基于XML的IoC环境搭建

(1)第一步:导包

测试Spring的IOC,需要导入四个核心jar包+一共日志包。

在这里插入图片描述
创建JavaBean:

package com.gql.bean;

public class Persion {
	private String name;
	private String gender;
	private Integer age;
	private String email;


	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	@Override
	public String toString() {
		return "Persion [name=" + name + ", gender=" + gender + ", age=" + age + ", email=" + email + "]";
	}
}

(2)第二步:写配置

Spring的配置文件中,集成了Spring的ioc容器管理的所有组件。

  • 注册一个Persion对象,Spring会自动创建这个Persion对象。
  • 一个Bean标签可以注册一个组件(对象,类)
  • class:要注册的组件的全类名。
  • id:对象的唯一标识。
  • property:为Persion对象的属性赋值。
<?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="p1" class="com.gql.bean.Persion">
		<property name="name" value="张三"></property>
		<property name="age" value="18"></property>
		<property name="email" value="zs@163.com"></property>
		<property name="gender" value=""></property>
	</bean>
	
</beans>

(3)第三步:测试

ApplicationContext:可以理解为代表ioc容器,实际上是容器的接口。
ClassPathXmlApplicationContext:当前应用的xml配置文件在ClassPath下。

我们在容器中一拿到对象就有值了,说明容器帮助我们创建好了对象。

  • 容器中对象的创建在容器创建完成时,就已经创建好了。
  • 同一个组件在ioc容器中是单实例的。
  • ioc容器在创建组件对象的时候(property),会利用setter方法为JavaBean 属性进行赋值。
package com.gql.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.gql.bean.Persion;

public class IoCTest {

	@Test
	public void test() {
		ApplicationContext ioc = new ClassPathXmlApplicationContext("ioc.xml");
		Persion p = (Persion) ioc.getBean("p1");
		System.out.println(p);
	}
}

执行结果如下(成功打印出在配置中注册的Persion对象):
在这里插入图片描述

在这里插入图片描述

(4)总结几个细节问题

1.src/源码包开始的路径,称为类路径的开始。

  • 所有源码包里面的东西都会被合并放在类路径里面。
  • java:/bin/
  • web:/WEB-INF/classes/

2.测试springIoC不要忘记导commons-logging-1.2.jar包

3.安装sts插件后,在类前会有s标志,Spring容器会接管标志了s的类。
在这里插入图片描述
4.加载ioc容器的配置文件问题

有两个实现类供使用:
在这里插入图片描述

  • new ClassPathXmlApplicationContext(“ioc.xml”); ioc容器的配置文件在类路径下。
  • FileSystemXmlApplicationContext(“F://ioc.xml”); ioc容器的配置文件在磁盘路径下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hudie.

不要打赏!不要打赏!不要打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值