一、Spring IOC- - 控制反转概述:
所谓的控制反转,就是将对象的创建及生命周期管理的过程交给Spring来处理的过程,被称之为控制反转。从此在开发当中不在需要去关注对象的创建以及对于对象生命周期的管理,而是在需要的时候都由Spring框架来提供。由spring框架创建对象及管理其生命周期的机制被称为–控制反转。
二、Spring ioc入门案例
1、下载spring相关jar包
2、解压下载好的压缩包(一包都是解压即用)
3、创建一个java项目,报相关的jar文件导入
4、加入到工程–>add to build path
5、通过xml文件使用spring框架
在src下创建一个spring配置文件,名字任意,但是通常情况下,都会使用applicationContext.xml(一般情况下,都会将配置文件放到src目录下)
6、通过配置文件生成标签创建对象,交由spring框架管理
<bean id="" class="">
id–就是这个类的标识,可以通过这个id找到相对应的class对象
class–通过class给定的字符串,然后通过反射机制去加载这个类
代码演示:
Person类:
public class Person {
public void say() {
System.out.println("hello spring~");
}
}
test类:
@Test
public void test01() {
//原始的调用对象
// Person p = new Person();
// p.say();
//通过spring容器获取这个对象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Person p = (Person) context.getBean("person");
p.say();
}
三、IOC实现原理:
在初始化一个Spring容器时,Spring会去解析指定的xml文件,当解析到其中的标签时,会根据该标签中的class属性指定的类的全路径名,通过反射创建该类的对象,并将该对象存入内置的Map中管理。其中键就是该标签的id值,值就是该对象。之后,当通过getBean方法来从容器中获取对象时,其实就是根据传入的条件在内置的Map中寻找是否有匹配的键值,如果有则将该键值对中保存的对象返回,如果没有匹配到则抛出异常。
默认情况下,多次获取同一个id的bean,得到的将是同个对象。
即使是同一个类,如果配置过多个标签具有不同的id,每个id都会在内置Map中有一个键值对,其中的值是这个类创建的不同的对象同一个标签下不允许配置多个同id的标签,如果配置则启动抛异常
四、IOC获取对象的方式:
通过context.getBean()方法获取
1.用id获取
2.用class获取
注意: 通过class方式获取bean时,如果同一个类配置过多个bean,则在获取时因为无法确定到底要获 取哪个bean会抛出异常。
而id是唯一的,不存在这样的问题,所以建议大家尽