Sping中IOC中文是控制反转,简单的讲就是没有使用使用Spring ioc之前我们创建对象通常使用new关键字来创建,而通过spring ioc,我们可以通过配置文件来创建对象。即把各个对象封装起来,然后通过IOC容器来关联这些对象,使得对象之间的联系是通过IOC建立起来的,但是对象之间并没有之间的联系。IOC最大用处就是实现对象之间的解耦。
IOC底层原理锁采用的技术有:1、xml配置文件;2、dom4j解析xml文件;3、工厂设计模式;4、java反射技术
spring的IOC操作有两部分操作:1、基于xml配置文件方式2、基于注解方式
spring ioc底层实现原理:
现在有两个类:public class UserService{
//方法
}
public class UserServlet{
//以前我们在UserServlet中使用UserService对象,通常都是使用new UserService(),来创建,这样增加了两个类之间的耦合度
}
使用spring IOC后,第一步:我们需要创建一个xml配置文件(通常命名为applicationContext.xml),在配置文件通过<bean>标签创建我们要创建的实现类如<id="userService" class="com.yfq.UserService"/>,其中class的属性值就是我们要创建对象的类的全限定名。
第二步:创建一个工厂类,使用dom4j解析配置文件+反射技术来创建对象,例如工厂类UserFactory
public class UserFactory{
//静态工厂方法,返回值类型是我们要创建的对象的类型
public static UserService getService(){
//使用dom4j解析xml文件
//解析xml文件,可以根据id值userService,得到对应的class属性值
String classValue="class属性值";
//使用反射创建对象
Class clazz=Class.forName(classValue);
//创建对象
UserService service =clazz.newInstance();
return service;
}
}
第三步:直接在UserServlet类中使用UserFactory直接调用getService()来返回UserService类这样就避免在UserServlet中直接使用new对象,从而降低了耦合度,以后再做改动时,直接在xml配置文件中改动。
spring中的bean的管理
spring的IOC除了可以创建对象之外还可以属性注入也称之为bean管理
spring bean的实例化的方式有三种:第一种:使用无参构造器方式创建,第二种使用静态工厂方式创建,第三种使用实例工厂的方式创建,其中无参构造器方式的创建是最常用的。