spring IOC原理剖析实例

注:IOC中最基本的技术就是“反射(Reflection)”编程,通俗来讲就是根据给出的类名(字符串方式)来动态地生成对象,这种编程方式可以让对象在生成时才被决定到底是哪一种对象。只是在Spring中要生产的对象都在配置文件中给出定义,目的就是提高灵活性和可维护性。

1. 创建接口       

ISay.java       

package cn.xxs.say;

public interface ISay {
	/**
	 * say
	 */
	public void say();
}

        1>.分别实现接口ISay

        2>.演示中日文输出  (CSay,JSay)   

CSay.java 

package cn.xxs.say.impl;

import cn.xxs.say.ISay;

public class CSay implements ISay{
	/**
	 * say
	 */
	public void say() {		
		System.out.println("早上好!");			
	}		
}

JSay.java

package cn.xxs.say.impl;

import cn.xxs.say.ISay;

public class JSay implements ISay{
	/**
	 * say
	 */
	public void say() {		
		System.out.println("グッドモーニング\r\n" + 
				"!");		
	}		
}

2.创建配置文件       

src下创建say.properties

csay=cn.xxs.say.impl.CSay
jsay=cn.xxs.say.impl.JSay

        1>.创建property       

        2>.读取       

        3>.通过Class.forName 创建对象实例     

3.调用

用junit测试一下

package cn.xxs.test;

import java.util.Properties;
import org.junit.Test;
import cn.xxs.say.ISay;

public class SayTest {	
	@Test
	public void test() throws Exception{
		//中文问好
		//1.创建Properties对象
		Properties pro = new Properties();
		//2.读取文件中的配置
		pro.load(SayTest.class.getResourceAsStream("/say.properties"));
		//3.传入一个参数,获取在配置文件中参数对应的值
		String className = pro.getProperty("csay");
		//4.实例化对象
		ISay csay = (ISay) Class.forName(className).newInstance();
		//5.调用对象中的方法
		csay.say();
	}
	
	@Test
	public void test1() throws Exception{
		//中文问好
		//1.创建Properties对象
		Properties pro = new Properties();
		//2.读取文件中的配置
		pro.load(SayTest.class.getResourceAsStream("/say.properties"));
		//3.传入一个参数,获取在配置文件中参数对应的值
		String className = pro.getProperty("jsay");
		//4.实例化对象
		ISay jsay = (ISay) Class.forName(className).newInstance();
		//5.调用对象中的方法
		jsay.say();
	}
}

测试结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值