spring IOC

Posted mike_chang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring IOC相关的知识,希望对你有一定的参考价值。

IOC 概念

IOC即控制反转,其借鉴了工厂模式的思想,把实例化对象的代码抽取出来封装到一个地方统一管理。工厂模式是集中到工厂类里统一管理,spring是集中到xml配置文件里统一管理。


 demo

技术分享图片
package com.test.spring;
// 汉武帝
public class HanWudi {
    // 将军
    private General general;

    public HanWudi(General general) {
        this.general = general;
    }
    // order 命令
    public void order() {
        general.goToWar("楼兰");
    }
}
View Code
技术分享图片
package com.test.spring;
// 将军
public interface General {
    public void goToWar(String placeName); // 地方
}
View Code
技术分享图片
package com.test.spring;
// 霍去病
public class HuoQubing implements General {
    @Override
    public void goToWar(String placeName) {
        System.out.println("go to war with " + placeName);
    }
}
View Code
技术分享图片
<?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="king" class="com.test.spring.HanWudi">
        <constructor-arg ref="general"/>
    </bean>
    <bean id="general" class="com.test.spring.HuoQubing"></bean>
</beans>
View Code

 

技术分享图片
package com.test.spring;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Driver {
    private HanWudi hanWudi;

    public static void main(String[] args) {
        // my.xml放在maven项目的resources目录下
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("/my.xml");
        HanWudi hanWudi = context.getBean(HanWudi.class);
        hanWudi.order();
        context.close();
    }
}
View Code

 

以上是关于spring IOC的主要内容,如果未能解决你的问题,请参考以下文章

Spring之IOC原理及代码详解

Spring IOC源代码具体解释之整体结构

Spring 框架学习——IOC思想原型及实质

Spring IOC源代码具体解释之容器依赖注入

[Spring 源解系列] 重温 IOC 设计理念

Spring IoC