码迷,mamicode.com
首页 > 其他好文 > 详细

IOC(五) - 注入外部bean

时间:2020-10-27 11:11:33      阅读:20      评论:0      收藏:0      [点我收藏+]

标签:需要   org   div   animal   xxxxxx   vat   ack   file   ref   

如果不使用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();
    }
}

技术图片

 

IOC(五) - 注入外部bean

标签:需要   org   div   animal   xxxxxx   vat   ack   file   ref   

原文地址:https://www.cnblogs.com/Ryan368/p/13879173.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!