一、IOC基本介绍
IoC : Inversion of Control (控制反转), 其本意就是将原本在程序中手动创建对象的控制权
,交给Spring来管理;
1、在没有IoC之前,我们的操作是: 若调用者需要使用某个对象,其自身就得负责该对象及该对象所依赖对象的创建和组装;
2、有IoC之后,调用者只管负责从Spring容器中获取需要使用的对象,不关心对象的创建过程,也不关心该对象依赖对象的创建以及依赖关系的组装; 也就是把创建对象的控制权反转给了Spring框架。
二、IOC入门案例
Spring的IoC操作分为:IoC配置文件方式和IoC的注解方式(常用)。这里使用配置文件方式来做入门案例
使用Spring调用一个User对象具体步骤如下:
- 1、导包(IDEA自带)
- 2、写一个POJO类
- 3、写配置文件(默认根目录是src)
- 4、创建一个Spring IOC容器对象
- 5、从IOC中获取一个Bean实例
- 6、使用该实例
1、创建一个实体类
//User.java
public class User {
public void add() {
System.out.println("User Add Method.");
}
@Override
public String toString() {
return "This is a user object.";
}
}
2、创建Spring的配置文件,进行Bean的配置
这里为了方便,将核心配置文件放在src目录下,并命名为 applicationContext.xml,内容如下:
<?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="user" class="demo1.User"></bean>
</beans>
元素属性说明:
- bean元素:使用该元素描述需要spring容器管理对象
- name属性:给被管理的对象起个名字,获得对象时getBean(“name值”)
- class属性:被管理对象的完整类名
- id属性:与name属性一模一样,名称不可重复,不能使用特殊字符
注: Spring的核心配置文件名称和位置不是固定的。但官方件建议将该核心配置文件放在src目录下,且命名为 applicationContext.xml。
3、编写测试类进行测试,通过配置文件创建类对象
public class TestUser {
public static void main(String[] args) {
//创建一个Spring IOC容器对象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//从IOC中获取一个Bean实例 这里需要转换类型(返回默认都是object类型)
User u = (User)context.getBean("user");
//使用该实例
System.out.println(u);
//调用该实例内部的属性或方法
u.add();
}
}
注:
-
BeanFactory: Spring最底层的接口, 只提供了IoC的功能, 负责创建、组装、管理bean,所以一般不适用BeanFactory, 推荐使用ApplicationContext(应用上下文)
-
ApplicationContext : ApplicationContext接口继承了BeanFactory, 还提供了AOP继承、国际化处理、事件传播、统一资源价值等功能; 可以查看该接口的继承体系;