• IOC(五)


    如果不使用Spring, 当我们在一个类中要应用另一个类中的方法时, 需要在前类中创建后类的对象后再使用, 如下例:

    我们要在 Animal 类中调用 Mammal 接口中的方法, 需要以下操作:

    1. Mammal接口:

    public interface Mammal {
    
        public void mammaltalk();
    }

    2. Dog类:

    public class Dog implements Mammal{
    
        public void mammaltalk(){
    
            System.out.println("dog talks woof!");
        }
    }

    3. Animal类:

    public class Animal {
    
        public void animaltalk(){
            System.out.println("animal talks XXXXXXXXXXXXX");
    
            //原始方式: 需要先创建dog实现类的对象再调用其方法
            Mammal dog = new Dog();
            dog.mammaltalk();
        }
    }

    4. 测试:

    而当我们使用Spring时, 要实现同样的需求, 需要相应地配置 xml文件, 具体方式如下:

    1. Mammal接口和Dog实现类不变, Animal类改写如下: (设置对象属性, 以便通过Spring以set注入的方式注入属性)

    package com.ryan.spring5.quoteOutBean;
    
    public class Animal {
    
        private Mammal dog;
    
        public void setDog(Mammal dog) {
            this.dog = dog;
        }
    
        public void animaltalk(){
            System.out.println("animal talks XXXXXXXXXXXXX");
            dog.mammaltalk();
    
    //        //原始方式: 需要先创建dog对象再调用其方法
    //        Mammal dog = new Dog();
    //        dog.mammaltalk();
        }
    }

    2. xml文件配置: (对象属性的值指定时要用ref, 将创建的dog对象赋值给test的dog变量)

    <?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="dog" class="com.ryan.spring5.quoteOutBean.Dog"></bean>
        <bean id="test" class="com.ryan.spring5.quoteOutBean.Animal">
            <property name="dog" ref="dog"></property>
        </bean>
    </beans>

    3. 测试:

    public class Test {
    
        public static void main(String[] args) {
    //        Animal animal = new Animal();
    //        animal.animaltalk();
    
            ApplicationContext context = new FileSystemXmlApplicationContext("src\com\ryan\spring5\quoteOutBean\bean.xml");
            Animal animal = context.getBean("test", Animal.class);
    
            animal.animaltalk();
        }
    }

  • 相关阅读:
    MFC中char*,string和CString之间的转换(待补充)
    Gem/Bundle/Rvm
    Ruby开发入门
    Maven原型骨架及常见问题
    Nginx Upstream模块源码分析(上)
    mysqldump的几个主要选项探究
    探索Antlr(Antlr 3.0更新版)
    Maven2插件开发入门
    说说家乡的互联网-沈阳
    Nginx模块之SessionSticky
  • 原文地址:https://www.cnblogs.com/Ryan368/p/13879173.html
Copyright © 2020-2023  润新知