`
json20080301
  • 浏览: 162947 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

利用反射机制模拟SPRING IOC实现

阅读更多
利用JAVA反射机制来简单解释一下IOC实现原理,当然SPRING实现的更完善,但使用的原理和技术是类似;
典型的SPRING IOC 配置代码片段,如何自己使用反射实现见JAVA代码;
  <bean id="javabean" class="com.sunshine.test.TestReflect">
            <property name="field1" value="test" />
             <property name="otherField1" value="AAAA" />
             </bean>


package com.sunshine.test;

import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

public class TestReflect {
	private String field1;

	private String field2;

	@Override
	public String toString() {
		return "TestReflect [field1=" + field1 + ", field2=" + field2 + "]";
	}

	/**
	 * @param args
	 * @throws Exception
	 * 
	 *             <bean id="javabean" class="com.sunshine.test.TestReflect">
	 *             <property name="field1" value="test" />
	 *              <property name="otherField1" value="AAAA" />
	 *              </bean>
	 */
	public static void main(String[] args) throws Exception {
		Map<String, Object> context = new HashMap<String, Object>();
		String className = TestReflect.class.getName();
		String property1 = "field1";
		System.out.println("spring 中配置的类名:" + className);

		// ----------1.模拟SPRING 利用配置的class 来创建对象实例
		Class clazz = Class.forName(className);
		Object object = clazz.newInstance();
		if (object instanceof TestReflect) {
			System.out.println("spring 调用默认构造函数后产生实例:" + object);
		}

		// ---------2.模拟SPRING 利用配置的property 来进行属性赋值--
		Method logMethod = clazz.getDeclaredMethod("set" + "F" + "ield1",
				String.class);
		logMethod.invoke(object, "test");
		System.out.println("spring  实例 的属性赋值后:" + object);

		// ---------3.正确理解SPRING属性赋值,其实是调用set方法[set+属性(注意需要大写第一个字母后]来赋值 --
		String property2 = "otherField1";
		logMethod = clazz.getDeclaredMethod("set" + "O" + "therField1",
				String.class);
		logMethod.invoke(object, "AAAA");
		System.out.println("spring  实例 的属性赋值后:" + object);

		// ----------4.模拟SPRING 容器--------------
		context.put("javabean", object);

		// ---------5 .模拟SPRING 容器取对象-----
		Object newObject = context.get("javabean");
		System.out.println("spring  取对象:" + newObject);

	}

	public String getField1() {
		return field1;
	}

	public void setField1(String field1) {
		this.field1 = field1;
	}

	public void setOtherField1(String field) {
		this.field2 = field;
	}

}

分享到:
评论

相关推荐

    以注解方式模拟Spring IoC AOP

    以注解方式模拟Spring IoC AOP,了解Spring是如何实现的.

    SpringIOC和AOP实现机制模拟

    SpringIOC和AOP实现机制模拟,来自与网络。

    springIoc实现原理

    spring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合

    模拟spring ioc过程

    这是个模拟spring ioc的学习例子,是个java工程。有助于对aop和ioc的理解

    Spring IoC实现

    Spring IoC实现Spring IoC实现Spring IoC实现Spring IoC实现

    反射模拟springIOC.rar

    手写springIOC 通过jdom读取xml文件 适合新手使用。

    模拟实现Spring的IOC

    模拟实现__Spring的Ioc 1、Spring主要两个作用:实例化Bean,动态装配Bean。并将所有的bean放到spring容器中,调用时从容器中取。Spring容器就是一个bean的Map:private Map, Object&gt; beans = new HashMap, Object&gt;...

    模拟Spring的IOC

    NULL 博文链接:https://lgd-java2eye.iteye.com/blog/759878

    Spring的IoC实现案例

    创建Priter类和pater类,分别代表打印机和纸张,然后利用Spring的IoC对打印机进行组装,分别实现A4纸打印和b5纸打印。

    Java反射_Spring IOC

    《Java语言的反射机制.pdf》资料书,示例源代码JAVA+Spring,初学java反射者可以看看

    简洁版的spring ioc自行实现 研究spring 加载机制

    简洁版的spring ioc自行实现,不到10个类,描述了加载机制,是研究IOC DI的好材料,能够了解IOC原理。目标是了解基本原理,所以没考虑循环引用的情况 完整的ECLIPSE工程,直接导入就可使用。 里面有测试例子,单步...

    spring IOC实现(墨者革离)

    该代码主要用于spring IOC的实现(墨者革离),模拟一个城门叩问的编剧场景

    spring ioc和aop原理流程图(详细)

    spring ioc容器初始化流程图 spring ioc容器依赖注入流程图 spring aop实现原理流程图

    模拟spring ioc技术

    简单模拟spring ioc技术,一个小demo,希望对您理解ioc有所帮助.

    简单模拟springIoc容器

    基于xml注册,简单模拟spring ioc容器。快速理解ioc容器

    利用Java的反射与代理实现IOC模式

    其实,了解它的内部实现机制和设计思想 是很有必要的大家都知道,Spring框架的IOC和AOP部分功能强大,很值得我们学习。那么让我们在这两篇文章 中分别详细的学习IOC和AOP的实现吧。 在本文中,主要讲述的是用Java的...

    springIOC手写框架分析

    springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC...

    spring ioc模块手写demo

    spring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demo...

    spring IOC反射装载bean

    spring基于xml配置加载bean 的demo 了解spring的反射机制

    java练习之模拟SPRING IOC,我的SUMMER

    练习共三部分: 1、XML读取,用于配置文件读取 2、模拟SPRING IOC 3、模拟STRUTS

Global site tag (gtag.js) - Google Analytics