Spring的控制反转

来源:互联网 发布:淘宝大v达人写女装 编辑:程序博客网 时间:2024/06/06 16:59

先简单介绍一下Spring是个啥↓
Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架。它属于一种一站式框架,对于javaee的每一层它都提供自己的解决技术。web层使用SpringMVC,service层使用控制反转,dao层使用jdbcTemplate。今天主要介绍service层的控制反转:
定义:所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。
简而言之,对象的创建不是通过new实现,而是交给Spring配置创建对象


实现:Spring框架的IoC实现有两种方式,一种是配置文件,另一种是注解方式。

  1. 配置文件(xml)方式

    • Step1: 添加spring类库(2个)。
    • Step2:编写相关类(service及dao接口和实现类)。
    • Step3:编写配置文件beans.xml配置step2中类。
  2. 注解(annotation)方式

    • Step1: 添加spring类库(3个,加common-annotations.jar)。
    • Step2:编写相关类(service及dao接口和实现类)并在实现类相应位置添加注解
    • Step3:编写配置文件beans.xml

我们来看一下配置文件实现的方式(注解方式明天再说):
在IoC中,所有的对象都称为bean。首先需要创建xml配置文件,然后引用Spring的约束,如下↓

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd">;       ......</beans>

然后,写上需要创建的对象:id是对象的名称,不能含有特殊符号(想用符号可以用name);class是想要创建的对象所对应的类的路径。

<bean id=“user" class="com.csdn.class.User"/>

上面实例化bean采用的是三个方法中的采用类的无参构造器实例化,剩下两种分别是静态工厂方法实例化实例工厂方法实例化。后两种方法用的比较少,就不展开说了。
下面是具体使用:假设有个User类,现在开始获取User的对象

public class TestIoc {    @Test    public void test(){        //加载配置文件        ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");        //获取对象        User user=(User)context.getBean("user");    }}

这样就完成了对象的获取。


IOC底层的原理是在一个工厂类中通过dom4j读取beans的配置文件,然后利用反射创建对象并返回。这些操作Spring已经帮我们封装好了,我们直接用就可以了。

原创粉丝点击