• Spring操作指南IoC基础环境配置(基于XML)


    本文内容
    环境
    案例项目
    传统方式装配播放设备
    使用Spring的IoC装配播放设备
    Spring的IoC做了什么?

    本文内容
    以一个简单的案例介绍如何基于XML搭建一个Spring开发环境

    环境
    Spring-4.3.2
    Commons-logging-1.2

    案例项目
    有一台计算机(Computer),这台计算机拥有声音播放设备的接口(PlaybackDevice),因此只需要给计算机装配合适的播放设备,这台计算机就可以播放声音。

    现在有两种符合这个接口规格的播放设备,分别是耳机(Earphone)和音箱(VoiceBox)。

    播放设备接口 PlaybackDevice.java

    package com.oolong.main;
     
    public interface PlaybackDevice {
     
        public void play();
        
        public void turnUp();
        
        public void tureDown();
    }

    计算机 Computer.java

    package com.oolong.main;
     
    public class Computer {
     
        private PlaybackDevice playDevice;
        
        public void setPlayDevice(PlaybackDevice playDevice) {
            this.playDevice = playDevice;
        }
        
        public void playMusic() {
            playDevice.play();
        }
    
    }

    注意这台计算机有一个成员变量是 PlaybackDevice 类型的,表示这台计算机的播放设备接口,只要为这个接口(属性)设置合适的设备,计算机的 playMusic() 方法就能够调用这台播放设备播放音乐了。

    耳机 Earphone.java

    package com.oolong.main;
     
    public class Earphone implements PlaybackDevice {
     
        public void play() {
            System.out.println("Earphone");
        }
     
        public void turnUp() {
            System.out.println("Earphone turn up");
        }
     
        public void tureDown() {
            System.out.println("Earphone turn down");
        }
    }

    音箱 VoiceBox.java

    package com.oolong.main;
     
    public class VoiceBox implements PlaybackDevice {
     
        public void play() {
            System.out.println("by Vocie Box");
        }
     
        public void turnUp() {
            System.out.println("Vocie Box turn up");
        }
     
        public void tureDown() {
            System.out.println("Vocie Box turn down");
        }
    }

    传统方式装配播放设备

    传统方式我们要实现这台计算机播放声音的话,我们需要创建一台计算机,然后创建一台播放设备,再将播放设备设置到这台计算机上,如下:

    package com.oolong.main;
     
    public class Traditional {
     
        public static void main(String[] args) {
            Computer computer = new Computer();
            
            // use earphone
            Earphone earphone = new Earphone();
            computer.setPlayDevice(earphone);
            computer.playMusic();
            
            // use voice box
            VoiceBox vb = new VoiceBox();
            computer.setPlayDevice(vb);
            computer.playMusic();
        }
    }

    当运行这部分代码的时候,会根据装配的不同的播放设备进行播放。

    使用Spring的IoC装配播放设备
    对于前面的代码,要使用改用Spring的IoC来实现对象的装配和管理,只需要做两件事:
    1、编写配置文件
    2、使用Spring的IoC容器来获取bean

    1、编写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/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
     
        <bean id="voiceBox" class="com.oolong.main.VoiceBox"></bean>
        <bean id="earphone" class="com.oolong.main.Earphone"></bean>
     
        <bean id="computer" class="com.oolong.main.Computer">
            <property name="playDevice" ref="voiceBox"></property>
        </bean>
     
        <!-- more bean definitions go here -->
     
    </beans>

    可以看到这里使用了三个<bean>标签声明了三个bean,实际上就是表示根据这三个类创建三个对象

    而在创建computer这个bean的时候,设置了一个属性,引用的是前面创建的voiceBox这个bean,也就是说将这个bean作为属性装配到这个computer的bean上

    注意,从接触Spring开始会经常用到bean这个词,这个词没有合适的中文翻译,就一直称为bean,我们把交由Spring的IoC容器管理的对象称为bean。

    2、通过Spring的IoC容器获取bean

    package com.oolong.main;
     
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
     
    public class AppContainer {
     
        public static void main(String[] args) {
            ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
            
            Computer computer = (Computer)ac.getBean("computer");
            computer.playMusic();
        }
    
    }

    接下来通过Spring提供的上下文(也就是IoC容器)获取computer这个bean。

    Spring有很多种上下文,此处因为是基于XML配置的,所以使用 ClassPathXmlApplicationContext。

    当获取到了这个computer bean之后,直接调用其playMusic() 方法,就能够播放音乐了,这是因为Spring的IoC容器已经根据上面的xml配置,帮我们自动装配好了播放设备。

    考虑下要更换一个播放设备应该怎么做?

    Spring的IoC做了什么?
    1、管理bean,也就是对象的创建和销毁
    2、维护bean之间的依赖关系
    3、?

    参考

    源码

  • 相关阅读:
    Go语言学习笔记(二)十分钟上手
    Go语言学习笔记(一)Let's 干吧
    Windows下visual studio code搭建golang开发环境
    dotweb——go语言的一个微型web框架(三)路由注册
    dotweb——go语言的一个微型web框架(二)启动dotweb
    dotweb——go语言的一个微型web框架(一)
    【转】URL的井号
    39行代码实现JS HTML模板(轻量+高效+易用)
    “void * __cdecl operator new(unsigned int)”(??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)
    C++ Compiling… Error spawning cl.exe
  • 原文地址:https://www.cnblogs.com/weilu2/p/spring_ioc_basic_config_xml.html
Copyright © 2020-2023  润新知