在没接触spring时总觉很模糊,不清楚到底是什么,今天就和大家分享下我对spring框架的IOC的理解。
一。IOC是什么?
Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想,我认为的IOC就是将程序员设计好的对象交给容器控制,而不是
传统中的在对象内部直接控制。理解IOC更重要的在于理解“谁控制谁?到底控制什么?以及为何叫反转?”。
1.谁控制谁?控制什么?:
传统java设计都是在对象内部通过new进行实例化,也就是程序主动去创建依赖的对象,但是IOC不一样,IOC有一个专门控制这些对象创
建的容器;那么就可以得出是IOC容器控制对象,控制什么?控制外部资源的获取。
2.反转?转了什么?
传统的java代码是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转,而IOC中的反转则是由专门的容器帮我们创建和注入对
象。所以容器帮我们查找以及注入依赖对象,对象变成了被动接受依赖对象,所以依赖对象的获取被反转了。
二。IOC注入.
我们首先新建一个实体类:person,代码如下:
package com.entity;
import java.util.List;
public class Person {
private int pid;
private String name;
private List<String> loves;
public List<String> getLoves() {
return loves;
}
public void setLoves(List<String> loves) {
this.loves = loves;
}
public Person() {
}
public Person(int pid, String name) {
this.pid = pid;
this.name = name;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person [pid=" + pid + ", name=" + name + "]";
}
public void fel() {
System.out.println("怕是要起飞了。。。");
}
}
然后去sping配置文件中配置bean;
1.set注入:
<bean id="person" class="com.entity.Person">
<!-- set 注入 -->
<property name="pid" value="2"></property>
<property name="name" value="测试2"></property>
</bean>
2.构造注入:
<!-- 构造注入(按参数顺序注入) -->
<bean id="person" class="com.entity.Person">
<constructor-arg value="3"></constructor-arg>
<constructor-arg value="测试3"></constructor-arg>
</bean>
3.集合注入:
因为不常用,本人也是稍作了解,也就不展示了。
最后感谢各位的耐心观看!!!下期见。