IOC - 注入外部bean
Posted ryan368
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOC - 注入外部bean相关的知识,希望对你有一定的参考价值。
如果不使用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的主要内容,如果未能解决你的问题,请参考以下文章