Spring如何运用Java反射机制实现IOC

2 篇文章 0 订阅

Java可以通过反射机制动态生成对象。例程见Java反射机制 从示例上可以看出,Java通过Class.forName()就可以生成类对象,然后生成类实例。而且可以通过Field设备属性。

  1. Class c1 = Class.forName("my.unittest.com.Book"); 
  2. Object o = c1.newInstance();
  3. Book b = (Book)o;
  4. Field idF = c.getDeclaredField("bookname"); 
  5. idF.set(o, "Thinking in Java"); 
  6. b.printBookName();  

这样就可以在配置文件XML里设定了类名,对象属性,然后通过Java反射机制实现创建新的对象。Spring的IOC依赖反转就是这样实现的。一个对象依赖于另一个对象,被依赖的对象现在可以写在配置文件里,如果需要改变该被依赖对象,就可以直接通过容器生成该对象。


控制反转:我们在使用一个类型的实例实现某个功能时,需要先new出该类型的一个实例,并赋值给我们声明的某个引用变量,这样我们才能够使用该变量进行操作。而new和赋值本事我们自己的权限,此处便是将该控制权限反转交给了spring容器。
依赖注入:某个类型要完成一个功能往往需要其他类型的变量来完成,我们在程序中往往通过自己new的方式来完成这个需求,而在spring中,容器会帮助我们将这种装配的功能实现,这便是依赖注入。


配置文件例子:

	<bean id="StudentDao" class="me.ml.dao.StudentDaoImpl">
		<property name="sqlSessionFactory" ref="sessionFactory"></property>
	</bean>


容器生成对象代码:

	public static void main(String[] args) {

		cxt = new ClassPathXmlApplicationContext("Beans.xml");
		IStudentDao sd = (IStudentDao) cxt.getBean("StudentDao");
		List<Student> students = sd.list();
		System.out.println("STUDENT表的记录数为:" + students.size());
		for (int i = 0; i < students.size(); i++)
			System.out.println(students.get(i).toString());

	}

容器通过配置文件找到me.ml.dao下面的StudentDaoImpl.java生成Bean名为StudentDao的对象,然后强制转换为IStudentDao的接口,这个接口提供了List()方法,调用该方法。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值