`

ioc测试

    博客分类:
  • Java
IOC 
阅读更多
person实体
public class Person {
	private String name;
	private String age;
	private String sex;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "[name="+name+",age="+age+",sex="+sex+"]";
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}
}

通过一个string的参数,获取相应的对象
public class ObjectService {
	private Object obj;
	private List<Map<String, String>> list;

	public ObjectService() {
		/*
		 * 这里假设list是个数据集,可以用resultset代替
		 */
		list = new ArrayList<Map<String, String>>();

		Map<String, String> map = new HashMap<String, String>();
		map.put("name", "test1");
		map.put("sex", "男");
		map.put("age", "12");

		list.add(map);
	}

	public Object getObject(String className) {
		Class<?> a = null;
		try {
			// 通过字符串加载类
			a = Class.forName("com.victop.beans." + className);
			// 实例化
			obj = a.newInstance();
			// 获得a类中声明的字段
			Field[] fields = a.getDeclaredFields();
			// 遍历字段
			for (Field field : fields) {
				for (int i = 0; i < list.size(); i++) {
					Map<String, String> map = (Map<String, String>) list.get(i);
					Set<String> set = map.keySet();
					Iterator<String> iterator = set.iterator();
					while (iterator.hasNext()) {
						String keyString = (String) iterator.next();
						//如果key值同类的属性名相同,那么将这个value set给该属性
						if (keyString.equals(field.getName())) {
							field.setAccessible(true);//可以访问private属性
							field.set(obj, map.get(keyString));
							break;
						}
					}
				}
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}

		return obj;
	}
}


测试结果
public class Test {
	public static void main(String[] agrs) {
		
		ObjectService objectService = new ObjectService();
		Person person = (Person) objectService.getObject("Person");
		System.out.println(person);
	}
}


输出结果:[name=test1,age=12,sex=男]
0
1
分享到:
评论
2 楼 shmily2038 2011-04-02  
悲剧了 写道
哥们,我的认识是
objectService.getObject(name);只负责获取对象,获取后
Person person = (Person) objectService.getObject("Person");
peson来操纵,set 或者动态调用里面的方法,而不是在获取的时候,来操纵,那样封装的太严重,外面根本就没法操纵,IOC就没了意义

嗯,目前这里只是测试的。当然不能真的这么用,封装死了,用反射就没意义了
1 楼 悲剧了 2011-04-02  
哥们,我的认识是
objectService.getObject(name);只负责获取对象,获取后
Person person = (Person) objectService.getObject("Person");
peson来操纵,set 或者动态调用里面的方法,而不是在获取的时候,来操纵,那样封装的太严重,外面根本就没法操纵,IOC就没了意义

相关推荐

    Spring IOC测试

    【Spring IOC测试】\n\n在Java开发领域,Spring框架是不可或缺的一部分,尤其其核心特性——Inversion of Control(IOC,控制反转),更是备受推崇。本文将深入探讨Spring的IOC特性,并通过一个XML配置文件的示例来...

    关于STM32CUBE的LED.ioc测试

    无聊配置

    一个小小的Ioc工具

    1:创建一个空的Java工程 ...4:运行文件: demo\src\org\jmin\test\ioc\BeanTestRunner.java 查看各个Ioc测试应用 5:运行文件:demo\src\org\jmin\test\swing\SwingAppStarter.java 一个ioc应用XML案例

    springIoc实现原理

    总之,Spring Ioc通过控制反转和依赖注入,极大地提高了代码的可维护性和可测试性,降低了系统的复杂度,使得开发人员能够更加专注于业务逻辑的实现。在实际开发中,理解并熟练运用Spring Ioc,对于提升开发效率和...

    IoC小例子(了解一下IoC设计模式入门)

    4. 测试类,使用IoC容器获取依赖对象并进行测试。 例如,IoCTest可能包含一个`IService`接口,一个实现了`IService`的`ServiceImpl`类,以及一个Spring配置文件`applicationContext.xml`,在测试类`IoCTestCase`中...

    自己实现ioc实例demo

    在IT行业中,依赖注入(IOC,Inversion of Control)是一种设计模式,它使得应用程序的组件之间解耦,提高了代码的可测试性和可维护性。在这个“自己实现ioc实例demo”中,我们将探讨如何通过XPath解析XML文件来实现...

    IOC和AOP深刻理解基础代码测试

    总之,通过这个基础测试项目,初学者可以深入了解Spring框架如何实现IOC和AOP,从而更好地应用于实际的Java Web开发中,提高代码质量,降低维护成本。记住,理论结合实践是学习的关键,动手操作这些示例代码,将会对...

    helloIoc.zip spring ioc控制反转简单测试代码

    这个"helloIoc.zip"压缩包包含的是一组用于演示Spring IOC基本概念和使用的测试代码。 **控制反转(IOC)**: 控制反转是一种设计原则,它的主要思想是将对象的创建和管理权交给容器,而不是由对象自身负责。在传统...

    工厂模式的测试并有spring ioc的简单实现

    在测试中,我们可以模拟不同的输入参数来验证工厂是否能正确地返回相应的产品实例。 2. **工厂方法模式**(factoryMethod):相比于简单工厂模式,工厂方法模式将创建对象的具体过程交给了子类,这样每个子类都可以...

    JavaEE Spring IoC入门

    JavaEE Spring IoC(Inversion of Control,控制反转)是企业级应用开发的重要技术,它极大地简化了Java应用程序的构建和维护。Spring框架的核心特性就是IoC,它通过管理对象的生命周期和对象间的依赖关系,使得...

    IoC容器的设计(利用反射、注解和工厂模式实现)

    3.自定义两个业务类Group和User,创建一个测试类Test,对IoC容器进行测试; 实验思路: 我们需要将自定义四个注解,然后将Group和User类使用@Component注解,在User类中创建Group类的实例化对象并设置为自动装配,...

    Spring-IOC实现

    - Spring提供了测试支持,如@Test注解的JUnit测试和@SpringBootTest注解的Spring Boot测试,方便进行集成测试和单元测试,确保IOC容器内的Bean正确工作。 以上就是Spring-IOC的基本实现和相关知识点,包括注解和...

    IOC详解IOC详解IOC详解IOC详解

    总结来说,IoC是一种设计思想,它通过反转对象的控制权,将对象的创建和管理交给一个外部容器,从而降低了对象间的耦合,提高了软件的可扩展性和可测试性。在Java中,Spring框架提供了强大的IoC和DI功能,是实现这一...

    SpringIoc示例代码

    Spring IOC,全称Inversion of Control,即“控制反转”,是Spring框架的核心特性之一。在传统的Java应用程序中,对象的创建和...同时,这样的测试也有助于理解和学习Spring IOC的工作机制,提升对Spring框架的理解。

    IOC练习事列

    这个“IOC练习事例”旨在帮助我们深入理解IOC和DI的概念,通过实现`MyselfIoc`容器,我们可以学习如何管理和解决对象的依赖关系,提高代码的灵活性和可测试性。通过接口编程和依赖注入,我们可以编写出更符合SOLID...

    什么是Ioc和DI

    ### 什么是控制反转(IoC)与依赖注入(DI) #### 控制反转(IoC) 控制反转(Inversion of Control,简称IoC)是软件工程领域的一个设计模式,主要用于简化对象之间的依赖关系管理。在传统的面向对象编程中,对象间的...

    Spring IoC依赖包

    - **测试支持**: Spring提供了一系列的测试工具和API,如`@RunWith(SpringJUnit4ClassRunner.class)`,使得基于IoC的单元测试和集成测试变得简单。 以上就是关于"Spring IoC开发最小依赖包"的主要内容,它们共同...

    利用Castle框架中IOC技术

    【 Castle 框架与 IOC 技术详解】 Castle框架是一个针对.NET平台的开源软件开发框架,它集合了多种成熟的应用技术,如ActiveRecord、AspectSharp、MonoRail以及MicroKernel/Windsor等。其中,MicroKernel是Castle的...

    JavaEE Spring IoC注解

    IoC通过管理对象的生命周期和依赖关系,帮助开发者实现松耦合,提高代码的可测试性和可维护性。在Spring中,IoC可以通过XML配置或注解实现,而注解方式则更受现代开发者的欢迎,因为它提供了更加简洁、直观的编程...

    MVC与IOC容器互动

    **MVC模式与IOC容器互动详解** MVC(Model-View-Controller)模式是一种软件设计模式,常用于构建Web应用程序,以实现业务逻辑、数据处理和用户界面的分离。在这个模式中,Model代表数据模型,负责处理应用程序的...

Global site tag (gtag.js) - Google Analytics